定位
更新时间:2021年03月07日
简介
javascript api提供在web端获取当前位置信息的方法,融合了浏览器定位、ip定位、安卓定位sdk辅助定位等多种手段,提供了获取当前准确位置、获取当前城市信息等功能。
浏览器定位精度和性能依赖浏览器自身特性,ip定位的精度值为城市级别。
对于安卓webview页面的开发者,可以结合定位sdk进行辅助定位,使用方法参见定位sdk相关章节。
注意:
1.由于chrome、ios10以上系统等已不再支持非安全域的浏览器定位请求,为保证定位成功率和精度,请尽快升级您的站点到https。
2.ios15系统浏览器默认关闭位置请求,需要用户设置手机为允许/询问后方可获取精确的定位,定位权限的开启方式请参见ios15定位问题。
3.由于浏览器原生定位成功率并不高,我们提供ip和安卓sdk定位进行辅助,如果定位精准在城市级别,可提供ak联系凯发k8官方旗舰厅提高定位精准度。
提供的定位服务
接口 | 类名 | 说明 |
浏览器定位 | geolocation | 优先调用浏览器h5定位接口,如果失败会调用ip定位 |
ip定位 | localcity | 根据用户ip 返回城市级别的定位结果 |
定位sdk辅助定位 | geolocation | 当您的app中有内置的web页面,同时在web页面需要提供您的当前位置信息时,可调用集成在app中的百度地图定位sdk来获取更精准的位置信息 |
状态码说明
状态码 | 说明 |
6 | err_permission_denied,没有权限,定位被拒绝 |
2 | err_position_unavailable,定位不可用 |
8 | err_position_unavailable,定位超时 |
定位方法代码示例
1浏览器定位
var map = new bmapgl.map("allmap"); var point = new bmapgl.point(116.331398,39.897445); map.centerandzoom(point,12); var geolocation = new bmapgl.geolocation(); geolocation.getcurrentposition(function(r){ if(this.getstatus() == bmap_status_success){ var mk = new bmapgl.marker(r.point); map.addoverlay(mk); map.panto(r.point); alert('您的位置:' r.point.lng ',' r.point.lat); } else { alert('failed' this.getstatus()); } });
2ip定位
var map = new bmapgl.map("allmap"); var point = new bmapgl.point(116.331398,39.897445); map.centerandzoom(point,12); function myfun(result){ var cityname = result.name; map.setcenter(cityname); alert("当前定位城市:" cityname); } var mycity = new bmapgl.localcity(); mycity.get(myfun);
3定位sdk辅助定位
var map = new bmapgl.map("allmap"); var point = new bmapgl.point(116.331398,39.897445); map.centerandzoom(point,12); var geolocation = new bmapgl.geolocation(); // 开启sdk辅助定位 geolocation.enablesdklocation(); geolocation.getcurrentposition(function(r){ if(this.getstatus() == bmap_status_success){ var mk = new bmap.marker(r.point); map.addoverlay(mk); map.panto(r.point); alert('您的位置:' r.point.lng ',' r.point.lat); } else { alert('failed' this.getstatus()); } });