一、需求
页面实现公司地址地图标注,点击可以触发微信导航功能
二、效果图
预约页展示公司位置
点击后,进入微信导航界面
三、实现
1、开启权限
在a中添加代码,用于授权定位
"permission": { ";: { "desc": "你的位置信息将用于小程序位置接口的效果展示" } }
2、获取当前坐标(不需要)
/** * 初始化当前坐标 */ _initLocation(){ var that = this; // 获取当前定位的经纬度信息 wx.showLoading({ title:"定位中", mask:true }) wx.getLocation({ type: 'gcj02', altitude:true,//高精度定位 //定位成功,更新定位结果 success: function (res) { var latitudee = res.latitude var longitudee = res.longitude ({ longitude:parseFloat(longitudee), latitude: parseFloat(latitudee), }) }, //定位失败回调 fail:function(){ wx.showToast({ title:"定位失败", icon:"none" }) }, complete:function(){ //隐藏定位中信息进度 wx.hideLoading() } }) },
3、获取托管坐标(开发时需要运行一次)
1)、re
<map id="map" longitude="{{longitude}}" latitude="{{latitude}}" markers="{{markers}}" scale="18" style="width: 100%; height: 300px;" bindtap="controltap" >
2)、re
// pages/order Page({ /** * 页面的初始数据 */ data: { msg:'欢迎广大家长来托管中心体验,请填写来访人员信息表,一个工作日内将会有工作人员和您取得联系,确定体验时间。为了配合疫情防控需要,请准备好健康码绿码和行程码,配合体温检测等相关检查,并全程佩戴口罩,感谢支持。', //自定义标记点数组 markers:[ { iconPath:'../../image;, id:0, latitude:****, //要去的纬度-地址 longitude:******, //要去的经度-地址 width:132, height:37 } ], //纬度 latitude:'', //经度 longitude:'', controls: [ { id: 1, iconPath: '../../image;, clickable: true } ] }, //验证提示 showModal(error) { wx.showModal({ content: error.msg, showCancel: false, }) }, /** 获取公司坐标 **/ controltap(e) { con('aaa') var that = this; wx.getLocation({ type: 'gcj02', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 success(res) { wx.chooseLocation({ success: function (res) { con(res) // 返回的res:name(地理名称)、address(详细地址,包括省市区相关信息,可根据需要进行拆分)、latitude(纬度)、longitude(经度) }, }) } }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { // () () }, /** * 初始化当前坐标 */ _initLocation(){ var that = this; // 获取当前定位的经纬度信息 wx.showLoading({ title:"定位中", mask:true }) wx.getLocation({ type: 'gcj02', altitude:true,//高精度定位 //定位成功,更新定位结果 success: function (res) { var latitudee = res.latitude var longitudee = res.longitude ({ longitude:parseFloat(longitudee), latitude: parseFloat(latitudee), }) }, //定位失败回调 fail:function(){ wx.showToast({ title:"定位失败", icon:"none" }) }, complete:function(){ //隐藏定位中信息进度 wx.hideLoading() } }) }, })
3)、运行,复制获取的经纬度
在地图上选好公司地址
拷贝经纬度,再下一步使用
调试器可以看到经纬度
4、设置初始经纬度
将初始经纬度设置为上一步获取的值,并在地图上进行标记
1)、re
<map id="map" longitude="{{longitude}}" latitude="{{latitude}}" markers="{{markers}}" scale="14" style="width: 100%; height: 300px;" bindtap="toCompany" > </map>
2)、re
// pages/order Page({ /** * 页面的初始数据 */ data: { address:'公司详细地址', companyName:'公司名称', msg:'欢迎广大家长来托管中心体验,请填写来访人员信息表,一个工作日内将会有工作人员和您取得联系,确定体验时间。为了配合疫情防控需要,请准备好健康码绿码和行程码,配合体温检测等相关检查,并全程佩戴口罩,感谢支持。', //自定义标记点数组 markers:[ { id:0, name:'公司名称', latitude:******, //公司的纬度-地址 longitude:******, //公司的经度-地址 callout:{ content:'公司名称', color:'#fff', fontSize:15, borderRadius:10, bgColor:'#000', display:'ALWAYS', padding:5, }, label:{ content:'点击地图,开启导航', color:'#333', anchorX:2, anchorY:2 } } ], //纬度 latitude:******, //经度 longitude:******, }, /** * 提交表单 */ toOrder(){ con('params=',params) //校验表单 con('进入表单提交') }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { }, /** * 跳转到公司导航 * @param {*} e */ toCompany: function (e) { wx.openLocation({ latitude: , longitude: , scale: 18, name: , addre }) }, /** * 生命周期函数--监听页面显示 */ onShow() { }, })