uniapp小程序地图功能

710 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天

记录最近微信小程序开发遇到的坑,因为高德微信sdk只支持搜索固定的几个类型,无法搜索关键字,所以最后用web服务api(不是jsapi记得分清)

1.记录地图poi搜索及显示makers标记点,点击makers显示详细信息(镇楼图)这里用的是高德地图web服务api加uniappmap组件

E60C01A8-A67A-4652-92B8-DC9468195BDD.png

1.1首选得去高德申请key值,记得选申请web服务选项

2D088201-E7A8-4215-B5AB-FE2DA98CAA12.png

1.2然后使用web服务api里的poi接口查询关键字信息

80B0B5BC-0791-4e62-AFF2-542CA5E417E0.png 代码如下: 最好通过新的数组如updatePoints赋值makers,用foreach循环把maer里的pois信息添加进去updatePoints数组,因为poi接口获取得经纬度没用分开,所以我用js切割然后赋值,然后uniapp得makers里的id只能赋值number类型,但是高德获取到的id是英文字符串,所以可以直接用索引值赋值id,iconpath就是makers图标路径,最后记得用新的数组承接循环后的数组

			uni.request({
				url: 'https://restapi.amap.com/v3/place/text?key=你的key&keywords=关键字&city=天津',
				method: 'GET',
				success: (res) => {
					console.log(res)
					let updatePoints = []
					this.maker = res.data.pois;
					this.maker.forEach(function(item, index) {
						updatePoints.push({
							id: index,
							title: item.name,
							latitude:item.location.split(',')[1],
							longitude: item.location.split(',')[0],
							iconPath: '/static/marker_yellow.png',
							width: 20,
							height: 20

						})
					})
					console.log(updatePoints,"up")
					this.covers = updatePoints

				}
			})
		
                    

然后使用获取当前经纬度方法

uni.getLocation({ type: 'gcj02', success: function(res) { console.log(res) that.longitude = res.longitude; that.latitude = res.latitude; } }); 经纬度绑定uni.getLocation获取到的值就行,这样地图就正常显示,

E9ACFB6E-931F-4a07-8721-1BBB592367CE.png 后续还有点击makers导航功能,限于篇幅,下次再写