遇到的问题:用高德官网的方法去定位时发现,ios可以在http的网址定位,而安卓手机只能在https的网址定位,这个也是很奇葩,查了官网文档说,是因为浏览器禁止了非安全域的定位请求。但是我们的站点就是https的,总之就是定位不成功,但是没有解决不了的bug,最后成功定位的实现思路就是,利用公众号开发的api先拿到用户的地理位置,转化为高德的坐标,再添加一个marker来实现
// 定位到用户当前位置
handleLocation() {
var _this = this;
// 公众号开发的api
wx.getLocation({
type: "wgs84",
success: function(res) {
// 用户同意后,将获取的位置基础信息(经度和纬度信息)请求到控制器
//控制器中利用高德的api请求返回地理位置信息数据
// console.log(res);
_this.getLocation(res.latitude, res.longitude);
},
cancel: function(res) {
// alert("用户拒绝授权获取地理位置");
_this.$toast({ msg: "拒绝授权获取地理位置会影响功能使用" });
}
});
},
getLocation(latitude, longitude) {
this.$toast({ msg: "正在定位..." });
var _this = this;
var lnglat = [longitude, latitude];
// 坐标转换,构造点标记
AMap.convertFrom(lnglat, 'gps', function(status, result) {
console.log("result==>", result);
if (result.info === "ok") {
var resLnglat = result.locations[0];
// 定点的图标
var marker = new AMap.Marker({
position: resLnglat,
icon: "https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png"
});
_this.map.add(marker);
_this.map.setFitView();
}
});
},
如果在看的你有什么更好的实现方法,欢迎留言交流