基于微信小程序Map标签及高德地图开源方法实现路径导航

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

        微信小程序自带地图map标签,他是基于canvas画图功能进行的地图渲染,同时依赖微信的getlocation获取经纬度,绘制周边地图。地图上可以标点,画线,查看当地地理信息。但是自带的导航功能模块不能对个人开发者公开。

        高德地图提供了基于微信小程序map标签的导航功能,只需要将高德文件导入项目,即可获取周边地理信息及导航、天气等信息。返回数据为微信小程序map标签的markers和linear对象形式,只需要稍加修饰,便可实现类似于官方导航的功能。

主要过程为

本次使用的是uniapp  使用vue+默认小程序模板创建项目,

在manifest.json中开启位置授权

基于微信小程序Map标签及高德地图开源方法实现路径导航

1.获取高德支持文件

在高德开放平台下载libs文件 并存放在项目文件夹内

基于微信小程序Map标签及高德地图开源方法实现路径导航

 微信原生开发直接按上文配置即可,uniapp的话有可能打包不过去,可以放在这里(一般不用),

基于微信小程序Map标签及高德地图开源方法实现路径导航

 然后vue3框架需要修改输出方式

基于微信小程序Map标签及高德地图开源方法实现路径导航

 这样import就可以正常引用

	import  amap from '../../libs/amap-wx.130.js'

2.绘制腾讯地图

在这里我们需要用原生的map先搞一个地图出来,同时wx.getlocation获取用户位置

这里的markers和polyline后面要用,先做个空的容器,其中markers可以先把当前位置标出来

<template>
	<view class="map_container">
	  <map class="map" id="map" 
	  :longitude="longitude" :latitude="latitude" 
	  scale="14" show-location="true" 
	  :markers="markers" bindmarkertap="makertap"
	  :polyline="polyline"
	  v-if="latitude"
	  ></map>
	</view>
	<input type="text" placeholder="起点"  v-model="start">
	<input type="text" placeholder="终点" @input="bindinput" v-model="target">
	<view class="tips" v-for="item in tips" :key="item.id" @click="selectThis(item)" >
		{{item.name}}
	</view>
	<button @click="bindWalk">步行</button>
	<button>驾车</button>
	<button>公交</button>
	
</template>

在onload中初始化地图,并加载高德地图实例

onLoad() {
			// 初始化高德地图对象
			console.log(amap)
			this.amap = new amap.AMapWX({key:'35e208c3050694260e292c0bb9eed6f1'})
			
		
			
			// 初始化地图
			let _this = this
			
			uni.getLocation({
				type: 'wgs84',//北斗
				success: function (res) {
					// _this.setData({
					// 	longitude : res.longitude,
					// 	latitude : res.latitude
					// })
				
					_this.markers =[..._this.markers,{
						id:0,
						longitude: res.longitude,
						latitude:res.latitude,
						height:30,
						width:30,
						iconPath:'../../static/logo.png'
					}]
					
					_this.longitude = res.longitude
					_this.latitude = res.latitude
					
					_this.points = [..._this.points,{
						longitude: res.longitude,
						latitude:res.latitude,
					}]
					console.log('当前位置的经度:' + res.longitude);
					console.log('当前位置的纬度:' + res.latitude);
				}  
			});

3.获取导航信息并渲染

可以注意到我上方的结构是有input框的 ,他用于输入目的地

他的回调可以从高德处获取模糊查询结果,我门将其渲染到input框底部,当点击后选定,并执行后续搜索,点击选定与模糊搜素如下

	bindinput(e){
				console.log(e.target.value)
				let keywords = e.target.value
				// console.log(this.amap)
				this.amap.getInputtips({
					keywords:keywords,
					location :'',
					success:(res)=>{
						if(res.tips[0]){
							this.tips = res.tips
							console.log(this.tips)
						}
					}
				})
			},
			selectThis(item){
				console.log(item)
				// 记录location
				let targetTemp = item.location.split(',')
				this.target = item.name
				this.tips=[]
				// this.points = [...this.points,{
				// 	longitude: targetTemp[0],
				// 	latitude: targetTemp[1],
				// }]
				this.points[1] ={
					longitude: targetTemp[0],
					latitude: targetTemp[1],
				}
				
				this.markers =[...this.markers,{
					id:2,
					longitude: targetTemp[0],
					latitude: targetTemp[1],
					height:30,
					width:30,
					iconPath:'../../static/logo.png'
				}]
			},

html结构

基于微信小程序Map标签及高德地图开源方法实现路径导航

然后我们点击上面的寻路按钮

基于微信小程序Map标签及高德地图开源方法实现路径导航

 他的回调是获取步行线路    this.amap.getWalkingRoute()

bindWalk(){
				// console.log(">>",this.polyline)
				this.polyline=[]
				this.amap.getWalkingRoute(this.getDataObject());
			},

而this.getDataObject()是输入目的地和目前位置的坐标(经纬度),在传入经纬度时我们可以同时传入success回调来处理getWalkingRoute的res,按照下文的方式可以分解为我们需要的画线对象,将其传入准备好的画线容器,大功告成

getDataObject(color){
				let _this = this;
				let colors = color || '#00AC62';
				// console.log("@",this.points)
				return{
					origin:_this.points[0].longitude+','+_this.points[0].latitude,
					destination:_this.points[1].longitude+','+_this.points[1].latitude,
					success:function(data){
						// console.log(">>",data)
						if(!data.paths){
							console.log('search failed')
							return;
						}
						let steps = data.paths[0].steps
						let points = []
						// console.log(">",steps)
						for(let i = 0 ; i <steps.length;i++){
							let polylines = steps[i].polyline.split(';')
							for(let j = 0 ; j <polylines.length;j++){
								let locations = polylines[j].split(',');
								points.push({
									longitude: locations[0],
									latitude: locations[1],
								})
							}
						}
						// 注意这里
						_this.polyline =[{
							points:points,
							color:colors,
							width:6
						}] 
						// _this.polyline =[..._this.polyline,{
						// 	points:points,
						// 	color:colors,
						// 	width:6
						// }] 
						// console.log("@",_this.polyline)
					}
				}
				
			}

演示

基于微信小程序Map标签及高德地图开源方法实现路径导航

 基于微信小程序Map标签及高德地图开源方法实现路径导航

 再吃输入,这里有一点需要注意,再次寻路时清空线路数组,始发地目前是本地,如果用选择目的地相同的方法选择始发地,替换掉markers的第一项,并将其经纬度替换后传入getWalkingRoute可以获得两点导航,如果只是目的地导航,则要保证markers第一个点不动

还有一点markers第一个本地位置是初始化后就有的,入伙需要动态导航还需要双向绑定第一个标点与本人位置的经纬度,我的方法是当经纬度变化时重新标点,然后将位已规划好的线路按当前位置分为两段(filter),用不同颜色标识。(我正在写,所以不提供代码只提供思路)

基于微信小程序Map标签及高德地图开源方法实现路径导航

 

原始教程出处微信小程序高德地图路线查询_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ek4y1z7hu?spm_id_from=333.337.search-card.all.click&vd_source=764374ab7bfa55ce0f00952d67efc61b文章来源地址https://www.toymoban.com/news/detail-486370.html

到了这里,关于基于微信小程序Map标签及高德地图开源方法实现路径导航的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序腾讯地图定位转高德地图定位

    微信小程序获取到了当前用户的定位,需要在高德地图上进行渲染。 发现正常渲染后,偏差几百米。 这里图方便,直接丢到window上了 这里演示“腾讯地图”转“高德地图”

    2024年01月25日
    浏览(59)
  • 微信小程序使用高德地图获取当前定位

    1.在腾讯地图官网注册一个key(创建一个应用会自动生成一个key,详细步骤如图) 腾讯位置服务 - 立足生态,连接未来 注意点:开通webserviceAPI服务:控制台 -应用管理 - 我的应用 -添加key- 勾选WebServiceAPI - 保存 (小程序SDK需要用到webserviceAPI的部分服务,所以使用该功能的KEY需

    2024年02月06日
    浏览(37)
  • 微信小程序引入高德地图Demo 快速上手

    本文参照官方文档进行编写 最后引入官方实例 最终效果 ` 注册账号 https://lbs.amap.com/?ref=http%3A%2F%2Flbs.amap.com%2Fdev%2F#/ 获取Key教程 https://lbs.amap.com/api/wx/guide/create-project/get-key/ 访问网址 https://github.com/amap-demo/wx-regeo-poiaround-weather 下载微信小程序实例 用微信开发者工具打开 打开

    2024年02月11日
    浏览(42)
  • 微信小程序---- 外卖小程序查看实时地图路线(骑手端&用户端)【高德地图】

    前言:1. 在小程序中需要使用map组件,文档链接:https://developers.weixin.qq.com/miniprogram/dev/component/map.html 2.使用的是高德地图,所以需要引进相关的js,下载链接:https://lbs.amap.com/api/wx/download 3.去往高德官方申请需要用的key,操作链接:https://lbs.amap.com/api/wx/guide/create-project/get-key

    2024年02月16日
    浏览(38)
  • 【微信小程序】微信小程序集成高德卫星地图完成多边形绘制与截图保存

    目录 功能需求 使用的技术点 注意点 实现步骤 代码 微信小程序-地图所在的wxml 微信小程序-地图所在的js 微信小程序-展示截图结果的wxml 微信小程序-展示截图结果的js H5-地图所在的html 完成效果  参考文档 感谢阅读,欢迎讨论 打开页面展示卫星地图,用户自行在地图上绘制

    2024年02月06日
    浏览(70)
  • uni微信小程序跳入外链(以高德地图为例)

    前瞻:vue项目在跳转外部链接时一般使用:window.open 或者 href 都离不开window这一属性,但总所周知 微信小程序并不存在 window这一属性,所以在这个时候我们需要加以变通 方法1: 1:跳入外部链接,此链接应该是 https加域名的链接,如果不是https的 那不可以 2:配置 将你所需

    2024年02月20日
    浏览(33)
  • uniapp---- 微信小程序中获取当前地理位置(高德地图)

    1.在manifest.json中选择微信小程序配置,勾选上位置接口。 2.在manifest.json中选择源码视图,添加permission和requiredPrivateInfos 3.进入微信公众平台添加合法域名(不能少但是可以放在最后添加,调试期间可以打开开发者工具的不校验合法域名) 4.下载amap-wx.130.js,并且进行引用,

    2024年02月12日
    浏览(39)
  • 微信小程序学习实录3(环境部署、百度地图微信小程序、单击更换图标、弹窗信息、导航、支持腾讯百度高德地图调起)

    百度地图微信小程序JavaScript API(简称小程序JSAPI),支持在微信小程序中使用百度数据资源。小程序JSAPI是对百度地图Web服务API中的部分接口按照微信小程序的规范进行了前端JS封装,方便了微信小程序开发者的调用。部分接口对返回的POI等数据按照微信小程序的数据格式进

    2024年02月02日
    浏览(42)
  • 【微信小程序】免费的高德地图api——获取天气(全过程)

    介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力? 我见过最好的答案就是:因为我喜欢的东西都很贵,

    2024年02月02日
    浏览(58)
  • 微信小程序使用高德地图实现检索定位附近周边的POI功能示例

           解压下载的文件得到 amap-wx.js ,在创建的项目中,新建一个名为 libs 目录,将 amap-wx.js 文件拷贝到 libs 的本地目录下。 登录微信公众平台,在 \\\"设置\\\" → \\\"开发设置\\\" 中设置 request 合法域名,将  https://restapi.amap.com  中添加进去,如下图所示:    

    2024年02月03日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包