admin管理员组

文章数量:1616420

前言

  • 地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用。
  • 浏览器定位
  • 高德地图支持浏览器定位
  • 百度地图支持浏览器定位
  • 腾讯地图支持浏览器定位

浏览器定位

怎么知道浏览器是否具备地理位置功能?

 if (navigator.geolocation) {
    //console.log("浏览器支持!");
 }

else {
    // console.log("浏览器不支持!");
 }

浏览器定位

//获取用户当前位置
void getCurrentPosition(onSuccess,onError,options);

//持续获取当前用户位置
int watchCurrentPosition(onSuccess,onError,options);

//watchId 为watchCurrentPosition返回的值
//取消监控
void clearWatch(watchId);

详细使用方法

https://blog.csdn/zyz00000000/article/details/82774543
https://wwwblogs/daipianpian/p/5811204.html

高德地图:浏览器定位

介绍+示例 : https://lbs.amap/api/javascript-api/guide/services/geolocation

高德地图:如何提高定位成功率

  • 在PC端,因为原生接口成功率很低,JS-API会优先调用精确IP定位服务,在IP定位失败的时候,尝试使用浏览器原生定位接口进行定位,如果原生定位接口也定位失败,则返回error事件或回调error信息。
  • 在移动端,如果开发者开启了sdk辅助定位,那么安卓手机上我们会优先尝试调用sdk的定位接口,失败之后优先调用浏览器原生定位接口进行定位,浏览器定位失败之后尝试进行精确IP定位,如果以上三种定位全部尝试失败则返回error事件或回调error信息。

简单来说,在PC端没啥好办法,在移动端可以使用SDK辅助定位。

高德地图:开启SDK辅助定位

貌似是自动开启的?

高德JS API提供的浏览器定位接口,融合了HTML5 Geolocation定位接口、精确IP定位服务,以及安卓定位sdk定位。

高德地图:开发文档

https://lbs.amap/api/javascript-api/summary

百度地图:浏览器定位

介绍 : http://lbsyun.baidu/index.php?title=jspopular3.0/guide/geolocation
示例 : http://lbsyun.baidu/jsdemo.htm#i8_1

百度地图:如何提高定位成功率

浏览器定位精度依赖浏览器自身特性,IP定位的精度值为城市级别。
对于安卓WebView页面的开发者,可以结合定位SDK进行辅助定位,使用方法参见定位SDK相关章节。

简单来说,在PC端没啥好办法,在移动端可以使用SDK辅助定位。

百度地图:开启SDK辅助定位

初始化H5控件时,设置地图SDK:
http://lbsyun.baidu/index.php?title=android-locsdk/guide/addition-func/assistant-h5

在浏览器中开启SDK辅助定位:

  // 开启SDK辅助定位
  geolocation.enableSDKLocation();

百度地图:开发文档

http://lbsyun.baidu/index.php?title=jspopular3.0

腾讯地图:浏览器定位

介绍+示例 : https://lbs.qq/tool/component-geolocation.html

其它

高德地图:Geolocation的定位流程以及定位失败的原因?

https://lbs.amap/faq/web/javascript-api/80

浏览器失败的原因

  • 浏览器不支持原生定位接口,如IE较低版本的浏览器
  • Chrome、火狐以及部分套壳浏览器接入的定位服务在国外,有较大限制,失败率高
  • 用户禁用了定位权限,需要用户开启设备和浏览器的定位权限,并在浏览器弹窗中点击“允许使用定位”选项
  • 浏览器禁止了非安全域的定位请求,比如Chrome、IOS10已陆续禁止,这时候需要升级站点到HTTPS
  • 百度地图:请求JavaScript API v3.0的定位功能时,必须获取用户授权

本文标签: 浏览器