记一坑:vue-amap的Geolocation插件在chrome浏览器精准定位失败问题

一、Geolocation使用: https://elemefe.github.io/vue-amap/#/zh-cn/plugins/geolocation

官网提示:由于 Chrome 、IOS10 等已不再支持非安全域的浏览器定位请求,为保证定位成功率和精度,请尽快升级您的站点到 HTTPS 。

记得在main.js中plugin中加入 ‘AMap.Geolocation’
记一坑:vue-amap的Geolocation插件在chrome浏览器精准定位失败问题_第1张图片
没加报错内容:
在这里插入图片描述
二、 console发现Get IPlocation failed

module.exports = {
  data () {
    let self = this
    return {
      center: [121.59996, 31.197646],
      lng: 0,
      lat: 0,
      loaded: false,
      plugin: [{
        pName: 'Geolocation',
        events: {
          init (o) {
            // o 是高德地图定位插件实例
            o.getCurrentPosition((status, result) => {
              console.log(status, result)
              if (result && result.position) {
                self.lng = result.position.lng
                self.lat = result.position.lat
                self.center = [self.lng, self.lat]
                self.loaded = true
                self.$nextTick()
              }
            })
          }
        }
      }]
    }
  }
}

在chrome中打开由于没有结果,我就console下status, result发现status打印如下图,Get IPlocation failed
在这里插入图片描述
三、getCurrentPosition返回的message原因解析 :

1、Get ipLocation failed:IP精确定位失败,精确IP定位服务目前无法完全覆盖所有用户IP,失败率在5%左右;
2、sdk定位失败:请检查sdk的key是否设置好,以及webview的定位权限及应用和系统的定位权限是否开启。
3、浏览器定位失败,有多种情况:
a、Browser not Support html5 geolocation:浏览器不支持原生定位接口,如IE较低版本的浏览器等;
b、Geolocation permission denied:用户禁用了定位权限,需要用户开启设备和浏览器的定位权限,并在浏览器弹窗中点击“允许使用定位”选项。
c、Geolocation permission denied:浏览器禁止了非安全域的定位请求,比如Chrome、IOS10已陆续禁止,这时候需要升级站点到HTTPS。注意Chrome不会禁止localhost等域名HTTP协议下的定位;
d、Get geolocation time out:浏览器定位超时,包括原生的超时,可以适当增加超时属性的设定值以减少这一现象,另外还有个别浏览器(如google Chrome浏览器等)本身的定位接口是黑洞,通过其请求定位完全没有回应,也会超时返回失败。
e、Get geolocation failed:定位失败,Chrome、火狐以及部分套壳浏览器接入的定位服务在国外,有较大限制,失败率高。

具体参考:https://lbs.amap.com/faq/web/javascript-api/80

五、尝试了其它浏览器打开,发现只有IE可以精准定位到

六、如果定位到城市即可满足需求,建议改用Geolocation.getCityInfo方法
改成

o.getCityInfo((status, result) => {
        console.log(result)
            })

最后如果有大佬知道解决chrome精准定位办法的,望告知,谢了

参考资料:
https://www.jianshu.com/p/5ce97fc0d81d vue使用高德地图
使用vue-amap需要注意:一定要设置宽高,不然地图不会显示。或者给外面套一个div,给div设置宽高也行。
https://elemefe.github.io/vue-amap/#/zh-cn/plugins/geolocation Geolocation使用
http://lbs.amap.com/faq/web/javascript-api/80 高德定位失败原因说明
https://blog.csdn.net/fen747042796/article/details/65445122 前端开发中的地理定位问题小总结

你可能感兴趣的:(记一坑:vue-amap的Geolocation插件在chrome浏览器精准定位失败问题)