微信小程序中获取用户当前地理位置
首先根据需求分析是否需求显示地图,我们的需求变动很大,最开始需要有一个地图页面,然后获取位置发送到下一个页面进行显示,后面用户感觉操作不便利所以又去掉了地图。
如果需要引用地图的话是需要key的,直接到各大地图开放平台进行申请就可以,在项目中我是使用的腾讯地图。
官网地址 https://lbs.qq.com/
申请key也比较简单,但是需要注意的是现在还没有提供删除功能,每个人最多申请5个key。
官网地址 https://lbs.qq.com/console/key.html
实际在项目中我们是只需要获取用户的地理位置的,所以代码很简单。
<view class="map-container">
<map id="myMap" class="my-map" latitude="{{latitude}}" longitude="{{longitude}}" scale="16" show-location></map>
</view>
const QQMapWX = require('../../utils/qqmap-wx-jssdk.min.js');
onLoad: function (options) {
let that = this;
// 引入腾讯地图
let qqmapsdk = new QQMapWX({
key: '你申请的key' // 必填
});
// 使用 wx.createMapContext 获取 map 上下文
that.mapCtx = wx.createMapContext('myMap');
wx.getLocation({
// 国内只能使用gcj02坐标系,wgs84不能使用;高德地图等都是使用的gcj02
type: "gcj02",
success: function (res) {
that.setData({
latitude: res.latitude,
longitude: res.longitude
})
}
})
}
另外需要注意的一点是,在微信开发者工具中获取到的地理位置精确度和真机上是不一样的,所以在后期我对获取到的地理坐标做了精确,统一保留到了小数点后七位,也是一般情况下地理坐标的精确度。这一部分在另一篇博客中写了,就不赘述了。
附精确坐标博文地址。
https://blog.csdn.net/weixin_43409286/article/details/85954009
补充
刚刚同事问我,如何把坐标转换成当前所在城市,之前也写了这个方法,后来没用就删掉了,在这里补充一下。
官网地址:
https://lbs.qq.com/qqmap_wx_jssdk/method-reverseGeocoder.html
onLoad: function (options) {
let that = this;
// 引入腾讯地图
let qqmapsdk = new QQMapWX({
key: '3GUBZ-6FXWP-ODDDU-LOFBP-5UCC3-UZBA7' // 必填
});
// 使用 wx.createMapContext 获取 map 上下文
that.mapCtx = wx.createMapContext('myMap');
wx.getLocation({
// 国内只能使用gcj02坐标系,wgs84不能使用;高德地图等都是使用的gcj02
type: "gcj02",
success: function (res) {
that.setData({
latitude: res.latitude,
longitude: res.longitude
})
qqmapsdk.reverseGeocoder({
location: {
latitude: that.data.latitude,
longitude: that.data.longitude
},
success: function (res) {
console.log(res);
that.setData({
province: res.result.ad_info.province,
city: res.result.ad_info.city,
latitude: that.data.latitude,
longitude: that.data.longitude
})
},
fail: function (res) {
console.log(res);
}
});
}
})
}