uniapp微信小程序地图实现周边

这篇具有很好参考价值的文章主要介绍了uniapp微信小程序地图实现周边。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

官方说明:小程序JavascriptSDK使用指南 - 微信小程序解决方案 | 腾讯位置服务https://lbs.qq.com/product/miniapp/jssdk/

  1. 先申请腾讯地图的开发者密钥,申请地址:腾讯位置服务 - 立足生态,连接未来

  2. 申请密钥时,需要勾选webServiceAPI和微信小程序

  3. 下载微信小程序JavaScriptSDK,微信小程序JavaScriptSDK v1.0,解压后,将qqmap-wx-jssdk.min.js放入到项目目录中

  4. 在点击需要查询的配套设施时,调用search方法,设置搜索条件keyword和location

  5. 在回调success中,将返回的结果通过marker标到地图上,或者以文本的形式展示在列表中

效果展示:

uniapp微信小程序地图实现周边,微信小程序,uniapp,uni-app,微信小程序,小程序,前端uniapp微信小程序地图实现周边,微信小程序,uniapp,uni-app,微信小程序,小程序,前端

调用qqmapsdk.search方法

qqmapsdk.search({
		keyword: name,//搜索周边poi,比如:“酒店” “餐饮” “娱乐” “学校” 等等
		page_size: 5, //每页条目数,最大限制为20条,默认值10
		location: that.mapxx.latitude + ',' + that.mapxx.longitude,//①String格式:lat<纬度>,lng<经度>(例:location: ‘39.984060,116.307520’)
		success: function(res) { //搜索成功后的回调
			wx.hideToast({});
			let arrlist = [];
			for (var i = 0; i < res.data.length; i++) {
				arrlist.push({ // 获取返回结果,放到mks数组中
					title: res.data[i].title,
					latitude: res.data[i].location.lat,
					longitude: res.data[i].location.lng,
					distance: res.data[i]._distance,
				})
			}
			// 每次不用重新赋值,通过下标给需要的赋值
			that.peripheralsData = arrlist;//前台需要展示的数组
		},
		fail: function(res) {
			console.log(res);
		},
		complete: function(res) {
		}
	});

周边配套设置的完整代码部分

HTML

<view class="infoBox_peripherals">
     <view class="infoBox_peripherals_title">
    	 <view class="infoBox_peripherals_title__left">
    		 <view class="infoBox_peripherals_title__left_bgbox"></view>
    		 <view>周边配套</view>
    	 </view>
     </view>
     <view class="infoBox_peripherals_mapbox">
    	<map class="infoBox_peripherals_mapbox__map" id="map" :latitude="mapxx.latitude" :longitude="mapxx.longitude"
    	:scale="mapxx.scale" :markers="mapxx.markers"
    	></map>
     </view>
     <view class="infoBox_peripherals_tabs">
    	 <u-tabs :list="list"
    	 :current="tabsCurrent"
    	 @click="tabsClick"
    	 ></u-tabs>
     </view>
     <view class="infoBox_peripherals_tabsitem">
    	 <view v-for="(item,index) in peripheralsData" :key="index" class="infoBox_peripherals_tabsitem_items">
    		 <view class="infoBox_peripherals_tabsitem_items_left">
    			 <image src="../../static/index/location-icon1@2x.png" style="width: 26rpx;height: 34rpx;"></image>
    			 <view class="infoBox_peripherals_tabsitem_items_left_text">{{item.title}}</view>
    		 </view>
    		 <view class="infoBox_peripherals_tabsitem_items_right">{{item.distance}}m</view>
    	 </view>
     </view>
    </view>

CSS

// 周边设备
&_peripherals{
    background: #FFFFFF;
    box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(0, 0, 0, 0.05);
    border-radius: 16rpx;
    margin-bottom: 80rpx;

&_title{
    display: flex;
    justify-content: space-between;
    padding: 14px 12px;
    font-size: 14px;
    letter-spacing: 1px;
&__left{
	display: flex;
	font-size: 24rpx;
	font-weight: 600;
	color: #00A39C;
	
	&_bgbox{
		width: 6rpx;
		height: 28rpx;
		background: #00A39C;
		border-radius: 3rpx;
		margin-right: 12rpx;
	}
}
&__right{
	font-weight: 600;
	
	&__green{
		color:#00AF99;
	}
	&__yellow{
		color:#FBAD00;
	}
}
}

&_mapbox{
width: 100%;
height: 400rpx;
border-radius: 12rpx;
padding: 12px 14px;
box-sizing: border-box;

display: flex;
justify-content: center;
align-items: center;
background-color: #fff;
&__map{
	height: 398rpx;
	width: 100%;
	border-radius: 5px;
	background-color: #fff;
}
}
&_tabs{
// padding: 12px 14px;
}

&_tabsitem{
padding: 14px 12px;

&_items{
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 18rpx;
	
	&_left{
		display: flex;
		align-items: center;
		font-size: 28rpx;
		font-weight: 400;
		color: #333333;
		
		&_text{
			margin-left: 10rpx;
		}
	}
	&_right{
		font-size: 24rpx;
		font-weight: 400;
		color: #999999;
	}
}
}
}

JS文章来源地址https://www.toymoban.com/news/detail-733534.html

<script>
	import {runSQL,information} from '../../common/util/wxutils.js';
	let  QQMapWX = require('../../common/map/qqmap-wx-jssdk.min.js');
	let qqmapsdk;
	qqmapsdk = new QQMapWX({
		key: information.key
	});
	let infowidth = 32,infoheight = 42;
	let infoiconPath = '../../static/mapview/loaction-red.png';
	
	export default {
		data(){
			return{
				list:[
					{name:'交通'},
					{name:'学校'},
					{name:'医疗'},
					{name:'生活'},
					{name:'休闲'}
				],
				peripheralsData:[],
				// 地图相关
				mapxx:{
					latitude:35.931616,
					longitude:120.008822,
					scale:16,
					markers:{
						id:0,
						latitude:35.931616,
						longitude:120.008822,
						iconPath:infoiconPath,
					}
				}
			}
		},
		onLoad(data) {
			
			this.initmap();
			// 自动调用周边查询
			this.searchNearby('交通');
		},
		filters : {
			filtercou(item){
				if(!item){
					return '暂未采集';
				}else{
					return item;
				}
			}
		},
		methods:{
			// 地图相关
			// 周边查询,切换tabs
			tabsClick(item){
				console.log(item);
				this.searchNearby(item.name);
			},
			searchNearby(name){
				let that = this;
                        	wx.showToast({
                        		title: '请稍后',
                        		icon: 'loading',
                        		duration: 2000
                        	})
                        	qqmapsdk.search({
                        		keyword: name,
                        		page_size: 5, 
                        		location: that.mapxx.latitude + ',' + that.mapxx.longitude,
                        		success: function(res) { //搜索成功后的回调
                        			wx.hideToast({});
                        			let arrlist = [];
                        			for (var i = 0; i < res.data.length; i++) {
                        				arrlist.push({ // 获取返回结果,放到mks数组中
                        					title: res.data[i].title,
                        					latitude: res.data[i].location.lat,
                        					longitude: res.data[i].location.lng,
                        					distance: res.data[i]._distance,
                        				})
                        			}
                        			// 每次不用重新赋值,通过下标给需要的赋值
                        			that.peripheralsData = arrlist;
                        		},
                        		fail: function(res) {
                        			console.log(res);
                        		},
                        		complete: function(res) {
                        		}
                        	});
			},
			initmap(){
                        	//获取当前的地理位置
                        	let vthis = this;
                        	uni.getLocation({
                        	    type: 'gcj02',
                        	    success: function (res) {
                        			vthis.mapxx.latitude = res.latitude;
                        			vthis.mapxx.longitude = res.longitude;
                        			vthis.mapxx.markers = [{
                        				id:1,
                        				latitude:res.latitude,
                        				longitude:res.longitude,
                        				iconPath:infoiconPath
                        			}];
                        	        console.log('当前位置的经度:' + res.longitude);
                        	        console.log('当前位置的纬度:' + res.latitude);
                        	    }
                        	});
			}
		}
	}
</script>

到了这里,关于uniapp微信小程序地图实现周边的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在 WebStorm 中开发 uni-app - 用vue2实现手机APP(apk) + 微信小程序项目开发方案 webstorm开发的uniapp + hbuilderx进行app 小程序打包

    我们主要分析了如下小程序开发框架,主要包括: 框架 技术栈 案例 微信小程序 支付宝小程序 百度小程序 头条小程序 H5 App uni-app Vue 丰富 ⭕ ⭕️ ⭕️ ⭕ ⭕️ ⭕ Taro React 丰富 ⭕ ⭕ ⭕ ⭕ ⭕ ⭕ wepy Vue 丰富 ⭕ ❌ ❌ ❌ ❌ ❌ mpvue Vue 丰富 ⭕ ❌ ❌ ❌ ⭕️ ❌  首先,就要排

    2024年02月05日
    浏览(97)
  • 在 WebStorm 中开发 uni-app - 用vue2实现手机APP(apk) + 微信小程序项目开发方案 webstorm开发的uniapp + hbuilderx进行app 小程序打包

    我们主要分析了如下小程序开发框架,主要包括: 框架 技术栈 案例 微信小程序 支付宝小程序 百度小程序 头条小程序 H5 App uni-app Vue 丰富 ⭕ ⭕️ ⭕️ ⭕ ⭕️ ⭕ Taro React 丰富 ⭕ ⭕ ⭕ ⭕ ⭕ ⭕ wepy Vue 丰富 ⭕ ❌ ❌ ❌ ❌ ❌ mpvue Vue 丰富 ⭕ ❌ ❌ ❌ ⭕️ ❌  首先,就要排

    2023年04月15日
    浏览(81)
  • WebStorm开发uni-app ,用vue2实现手机APP(apk) + 微信小程序多端项目开发方案 webstorm开发的uniapp + hbuilderx进行app 小程序打包

    我们主要分析了如下小程序开发框架,主要包括: 框架 技术栈 案例 微信小程序 支付宝小程序 百度小程序 头条小程序 H5 App uni-app Vue 丰富 ⭕ ⭕️ ⭕️ ⭕ ⭕️ ⭕ Taro React 丰富 ⭕ ⭕ ⭕ ⭕ ⭕ ⭕ wepy Vue 丰富 ⭕ ❌ ❌ ❌ ❌ ❌ mpvue Vue 丰富 ⭕ ❌ ❌ ❌ ⭕️ ❌  首先,就要排

    2024年02月11日
    浏览(75)
  • 【uni-app微信小程序】实现支付功能

    实现微信支付功能需要在小程序后台配置支付相关信息,并且在前端代码中调用微信支付API进行支付操作。好的, uni-app微信小程序实现支付功能整体流程 大致如下: 注册微信公众平台,并完成开发者资质认证; 在微信商户平台注册商户账号,并完成商户资质认证; 在商户

    2024年02月13日
    浏览(99)
  • 摇骰子设计与实现(uni-app微信小程序)

    手机摇一摇可以摇骰子,上划可查看结果,震动加声音等功能。 本章底部会贴出所有代码 ,图片资源以及音频资源很简单,自己找一下就行了。 已经上线小程序,可以扫码直接预览效果。 新建一个项目,将已经准备好的资源,放入到项目中。下面是需要资源图片的示例。

    2024年02月12日
    浏览(78)
  • uniapp微信小程序地图功能实现教程

    本篇文章将介绍如何在uniapp中实现微信小程序的地图功能,包括获取appid和地图授权的key,以及具体的功能实现步骤。

    2024年02月05日
    浏览(126)
  • uniapp微信小程序实现地图展示控件

    最终实现效果: 地图上展示控件,并可以点击。 目录 一、前言 二、在地图上展示控件信息 点击后可进行绘制面图形 1.使用cover-view将控件在地图上展示 2.设置控件样式,使用好看的图标 3.控件绑定点击事件 原本使用的是 controls ,但是我发现官方明确说明,这个功能即将废

    2024年02月04日
    浏览(107)
  • 微信小程序canvas实现简易手写签名版(uni-app)

    微信小程序可以通过canvas实现手写签名的效果,本文中使用的是微信小程序Canvas 2D接口 本示例中绘制的是横屏签名的效果,效果图如下: 这里我们需要调整canvas的物理宽高,默认物理宽高为300*150px,物理宽高调整通过css样式即可,本文中需要根据屏幕高度进行动态调整,使

    2024年02月12日
    浏览(68)
  • uni-app实现点击显示隐藏列表,兼容微信小程序

    效果:    小程序打印的结果:值一直为true   如果你试过v-if不生效,又试了v-show,还是不行!!千万不要着急! 不是自己写的不对,而是uni-app和微信小程序修改值的方式不一致造成的。反正就是不承认是自己的问题。 其实解决的办法也很简单,就是要兼容两端,写出符合

    2024年02月09日
    浏览(69)
  • uni-app/微信小程序 实现图片或元素淡入淡出效果

    如题: 直接上代码 html js部分 需要在date中声明好                 current: 0,                 hidepic: null,                 showpic: null 因为是已进入就开始的,所以 要在生命周期中使用 最后一部别忘了,要给需要淡入淡出的元素或者图片设置绝对定位

    2024年02月12日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包