个人主体的小程序如何利用腾讯地图 webServiceAPI 配合map组件 来做路线规划?

前言:
最近在做一个自己的小程序的工具集‘web小白成长之旅’ ,里面的包括一些地图等工具。但是个人主体开发小程序在添加插件里面无论如何都无法添加 ‘腾讯位置服务路线规划’插件。既然找不到这个插件,那么,只能绕过这个插件,去使用其他的。今天我就用腾讯地图 webServicr API服务来做一些简单的地图展示。
看一下效果:
在这里插入图片描述

一、前期准备工作

1.在设置—第三方设置-----第三方平台授权管理中 -添加 腾讯位置授权在这里插入图片描述
2. 在腾讯位置服务后台 控制台 添加应用 以及 添加key: 这里有一个重点: 在下面勾选上微信小程序选项 并且把自己小程序的appid复制在里面
在这里插入图片描述

二、项目配置工作(我是用uniapp写的小程序,所以在这里我说的是uniapp 里面的配置)

1.在manifest.json 里面 打开 源码视图 找到mp-weixin,配置"permission" : {
“scope.userLocation” : {
“desc” : “你的位置信息将用于小程序定位组件效果展示”
}
},
在这里插入图片描述

2.配置requiredPrivateInfos ,如果不配置报错:选择地址:{“errMsg”:“getLocation:fail the api need to be declared in the requiredPrivateInfos field in app/ext.json”}
在这里插入图片描述

三、页面使用


我的步骤:
1.通过chooseLocation 获取到出发地和目的地的经纬度,调用腾讯weibService API给的接口,有一些bug,但是可以大致的规划出路线。

先看一下效果
在这里插入图片描述

拿到的数据结果:
在这里插入图片描述

具体代码:

<template>
	<map name="" :latitude="latitude" :longitude="longitude" show-location :markers="covers" :scale="scale" :polyline="polyline_Object"></map>
</template>
//
<script>
	export default{
	data(){
		return{
			start_address:{
				longitude:0,
				latitude :0
			},
			end_address:{
				longitude:0,
				latitude :0
			},
			//这个数据就是渲染所有的点,利用map组件中的polyline 进行点的渲染
			polyline_Object:[
				{
				points:[],
				color: "#3FB837",
				width: 3,
				dottedLine: false
				}
			]
		}
	}
		methods:{
			getRouteDriving() {
				let that=this;
				uni.request({
					url: 'https://apis.map.qq.com/ws/direction/v1/driving/?from=' + that.start_address.latitude +
						',' + that.start_address.longitude + '&to=' + that.end_adress.latitude + ',' + that
						.end_adress.longitude + '&accuracy=30&output=json&callback=cb' + '&key=' + that.keyCode,
					success(res) {
						// console.log(res)
						if (res.data.status == 0) {
							let coors = res.data.result.routes[0].polyline;
							for (let i = 2; i < coors.length; i++) {
								coors[i] = coors[i - 2] + coors[i] / 1000000
							}
							// console.log('路线坐标点串解压完毕!')
							// console.log('路线坐标点串解压结果如下:')
							// console.log(coors);
							/** 将解压后的坐标点串进行拼接成polyline想要的样子 */
							var coors_new = [] //记住微信小程序声明一个数组这样写
							for (var j = 0; j < coors.length; j++) {
								coors_new.push({
									latitude: parseFloat(coors[j]),
									longitude: parseFloat(coors[j + 1])
								})
								j++;
							}
							// console.log('路线坐标点串格式化完毕!')
							// console.log('路线坐标点串格式化结果如下:')
							// console.log(coors)
							// console.log('已经产生新的经纬度数组coors_new如下:')
							// console.log(coors_new)
							// console.log('路线坐标点串解压后一共:' + coors.length + '个')
							// console.log('路线坐标点串转换后一共:' + coors_new.length + '个')
							that.polyline_Object=[{
								points:coors_new,
								color: "#3FB837",
								width: 3,
								dottedLine: false
							}]
						}
					},
					fail(err) {
						console.log(err)
					}
				})
			},	
	}
}
</script>


以上就是利用腾讯地图webService API来做路线规划渲染的结果。大家也可以看腾讯的官方文档来做

或者大家来我的小程序(web小白成长之旅)上来看一下效果。希望对你有所帮助。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微信小程序中使用地图路线规划需要使用腾讯地图API。以下是一个简单的示例: 1. 在小程序中引入腾讯地图API: ```javascript const QQMapWX = require('./qqmap-wx-jssdk.min.js'); const qqmapsdk = new QQMapWX({ key: 'yourKey' //在腾讯地图开发平台申请的key }); ``` 2. 获取用户当前位置: ```javascript wx.getLocation({ type: 'gcj02', //定位方式,gcj02为国测局加密坐标系 success: function (res) { const latitude = res.latitude; const longitude = res.longitude; //调用腾讯地图API获取城市信息 qqmapsdk.reverseGeocoder({ location: { latitude: latitude, longitude: longitude }, success: function (res) { console.log(res.result.address_component.city); }, fail: function (res) { console.log(res); } }); }, fail: function (res) { console.log(res); } }); ``` 3. 获取起点和终点位置的经纬度: ```javascript //调用腾讯地图API获取起点和终点位置信息 qqmapsdk.geocoder({ address: '广州市天河区岗顶地铁站', success: function (res) { const fromLatitude = res.result.location.lat; const fromLongitude = res.result.location.lng; qqmapsdk.geocoder({ address: '广州市天河区棠东地铁站', success: function (res) { const toLatitude = res.result.location.lat; const toLongitude = res.result.location.lng; //调用腾讯地图API获取路线规划信息 qqmapsdk.direction({ mode: 'driving', from: { latitude: fromLatitude, longitude: fromLongitude }, to: { latitude: toLatitude, longitude: toLongitude }, success: function (res) { console.log(res); }, fail: function (res) { console.log(res); } }); }, fail: function (res) { console.log(res); } }); }, fail: function (res) { console.log(res); } }); ``` 4. 在地图上显示路线: ```javascript //在地图上显示路线 const polyline = []; const steps = res.result.routes[0].steps; for (let i = 0; i < steps.length; i++) { const polylinePoints = steps[i].polyline; for (let j = 0; j < polylinePoints.length; j++) { const point = polylinePoints[j].split(','); polyline.push({ latitude: parseFloat(point[0]), longitude: parseFloat(point[1]) }); } } that.setData({ polyline: [{ points: polyline, color: "#FF0000DD", width: 4, dottedLine: false }] }); ``` 以上是一个简单的地图路线规划示例,具体实现还需根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值