JavaScript API提供在Web端获取当前位置信息的方法,融合了浏览器定位、IP定位、安卓定位SDK辅助定位等多种手段,提供了获取当前准确位置、获取当前城市信息等功能。
浏览器定位精度和性能依赖浏览器自身特性,IP定位的精度值为城市级别。
对于安卓WebView页面的开发者,可以结合定位SDK进行辅助定位,使用方法参见定位SDK相关章节。
我们可以通过 BMap.Geolocation 获取用户的精确位置,也可以通过 BMap.LocalCity根据用户 IP 快速定位到所在城市。
通过 getCurrentPosition 方法获取用户当前的精确位置。定位结束后,可通过 getStatus 方法判断定位是否成功:
var geolocation = new BMap.Geolocation();geolocation.getCurrentPosition(function (result) {if (geolocation.getStatus() === BMAP_STATUS_SUCCESS) {map.centerAndZoom(result.point, 16);map.addOverlay(new BMap.Marker({ position: result.point }));var addr = result.address;console.log(addr.province);console.log(addr.city);console.log(addr.district);console.log(addr.street);console.log(result.accuracy); // 定位精度,单位为米} else if (geolocation.getStatus() === BMAP_STATUS_PERMISSION_DENIED) {alert('定位失败:用户拒绝了定位授权');} else if (geolocation.getStatus() === BMAP_STATUS_TIMEOUT) {alert('定位失败:请求超时');} else {alert('定位失败');}});
如果只需要获取所在城市,可以使用BMap.LocalCity根据用户 IP 定位城市。
var localCity = new BMap.LocalCity({renderOptions: {map: map,},});localCity.get(function (result) {console.log(result.name); // 城市名称console.log(result.code); // 城市编码console.log(result.center); // 城市中心点坐标,BMap.Point对象});
由于Chrome、iOS10以上系统等已不再支持非安全域的浏览器定位请求,为保证定位成功率和精度,请尽快升级您的站点到HTTPS。
iOS15系统浏览器默认关闭位置请求,需要用户设置手机为允许/询问后方可获取精确的定位,定位权限的开启方式请参见iOS15定位问题。
由于浏览器原生定位成功率并不高,我们提供ip和安卓sdk定位进行辅助,如果定位精准在城市级别,可提供ak联系我们提高定位精准度。
BMap.Geolocation
BMap.LocalCity
上一篇
下一篇