(未显示1个用户的8个中间版本) | |||
第1行: | 第1行: | ||
{{jspopularGL-sidebar}} | {{jspopularGL-sidebar}} | ||
− | <div class="h1-title">定位</div><div id="update- | + | <div class="h1-title">定位</div><div id="update-time1">更新时间:2021年03月07日 </div><div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>简介</span></div></div></div><div class="serve-explain-text"> |
JavaScript API提供在Web端获取当前位置信息的方法,融合了浏览器定位、IP定位、安卓定位SDK辅助定位等多种手段,提供了获取当前准确位置、获取当前城市信息等功能。<br/>浏览器定位精度和性能依赖浏览器自身特性,IP定位的精度值为城市级别。<br/>对于安卓WebView页面的开发者,可以结合定位SDK进行辅助定位,使用方法参见[https://lbsyun.baidu.com/index.php?title=android-locsdk/guide/addition-func/assistant-h5 定位SDK相关章节]。 | JavaScript API提供在Web端获取当前位置信息的方法,融合了浏览器定位、IP定位、安卓定位SDK辅助定位等多种手段,提供了获取当前准确位置、获取当前城市信息等功能。<br/>浏览器定位精度和性能依赖浏览器自身特性,IP定位的精度值为城市级别。<br/>对于安卓WebView页面的开发者,可以结合定位SDK进行辅助定位,使用方法参见[https://lbsyun.baidu.com/index.php?title=android-locsdk/guide/addition-func/assistant-h5 定位SDK相关章节]。 | ||
− | <div style="color:#f00">注意:<br/> | + | <div style="color:#f00">注意:<br/><div style="color:#f00">1.由于Chrome、iOS10以上系统等已不再支持非安全域的浏览器定位请求,为保证定位成功率和精度,请尽快升级您的站点到HTTPS。</div><div style="color:#f00">2.iOS15系统浏览器默认关闭位置请求,需要用户设置手机为允许/询问后方可获取精确的定位,定位权限的开启方式请参见[https://lbsyun.baidu.com/faq/search?id=223&title=688 iOS15定位问题]。</div><div style="color:#f00">3.由于浏览器原生定位成功率并不高,我们提供ip和安卓sdk定位进行辅助,如果定位精准在城市级别,可提供ak联系我们提高定位精准度。</div></div></div><!--jsapi-demo模板--><div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>提供的定位服务</span></div></div></div><div class="serve-explain-text"> |
− | 1. | + | |
− | + | ||
− | 2. | + | |
− | </div></div><!--jsapi-demo模板--><div class="bluetitle"><div class=" | + | |
{| width="519" border="1" | {| width="519" border="1" | ||
|- | |- | ||
第25行: | 第21行: | ||
| 当您的APP中有内置的Web页面,同时在Web页面需要提供您的当前位置信息时,可调用集成在App中的百度地图定位SDK来获取更精准的位置信息 | | 当您的APP中有内置的Web页面,同时在Web页面需要提供您的当前位置信息时,可调用集成在App中的百度地图定位SDK来获取更精准的位置信息 | ||
|} | |} | ||
− | </div><div class="bluetitle"><div class=" | + | </div><div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>状态码说明</span></div></div></div><div class="serve-explain-text"> |
− | + | {| width="519" border="1" | |
− | + | |- | |
− | var | + | | width="60" | '''状态码''' |
− | / | + | | width="150" | '''说明''' |
− | + | |- | |
− | + | | 6 | |
− | + | | ERR_PERMISSION_DENIED,没有权限,定位被拒绝 | |
− | } | + | |- |
− | + | | 2 | |
+ | | ERR_POSITION_UNAVAILABLE,定位不可用 | ||
+ | |- | ||
+ | | 8 | ||
+ | | ERR_POSITION_UNAVAILABLE,定位超时 | ||
+ | |} | ||
+ | </div><div class="bluetitle"><div class="serve-explain-text"><div class="service-page-anchor"><span>定位方法代码示例</span></div></div></div><div class="devguide"><div class="leftborderbg" style="height:5000px;"></div><div class="devguideorder"><span>1</span>浏览器定位</div><div class="devguidecenter"><pre class="prettyprint codestyle" style="overflow-y: scroll;">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()); | ||
+ | } | ||
+ | }); | ||
+ | </pre> | ||
+ | </div><div class="devguideorder"><span>2</span>IP定位</div><div class="devguidecenter"><pre class="prettyprint codestyle" style="overflow-y: scroll;">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); | ||
</pre> | </pre> | ||
− | </div><div class="devguideorder"><span> | + | </div><div class="devguideorder"><span>3</span>定位SDK辅助定位</div><div class="devguidecenter"><pre class="prettyprint codestyle" style="overflow-y: scroll;">var map = new BMapGL.Map("allmap"); |
− | + | var point = new BMapGL.Point(116.331398,39.897445); | |
− | var | + | map.centerAndZoom(point,12); |
− | + | ||
− | + | var geolocation = new BMapGL.Geolocation(); | |
− | + | // 开启SDK辅助定位 | |
− | var | + | 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()); | ||
+ | } | ||
+ | }); | ||
</pre> | </pre> | ||
</div></div> | </div></div> |
2022年8月22日 (一) 16:32的最后版本
定位
更新时间:2021年03月07日
简介
JavaScript API提供在Web端获取当前位置信息的方法,融合了浏览器定位、IP定位、安卓定位SDK辅助定位等多种手段,提供了获取当前准确位置、获取当前城市信息等功能。
浏览器定位精度和性能依赖浏览器自身特性,IP定位的精度值为城市级别。
对于安卓WebView页面的开发者,可以结合定位SDK进行辅助定位,使用方法参见定位SDK相关章节。
注意:
1.由于Chrome、iOS10以上系统等已不再支持非安全域的浏览器定位请求,为保证定位成功率和精度,请尽快升级您的站点到HTTPS。
2.iOS15系统浏览器默认关闭位置请求,需要用户设置手机为允许/询问后方可获取精确的定位,定位权限的开启方式请参见iOS15定位问题。
3.由于浏览器原生定位成功率并不高,我们提供ip和安卓sdk定位进行辅助,如果定位精准在城市级别,可提供ak联系我们提高定位精准度。
提供的定位服务
接口 | 类名 | 说明 |
浏览器定位 | 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()); } });