js百度地图android定位不准,百度地图js定位不准
瀏覽器H5定位即navigator.geolocation,通過IP或者域名的形式,如:http://172.21.3.82:8080 和http://b.cunzhang.com進行訪問時,調用navigator.geolocation.getCurrentPosition,打開控制臺,你會發(fā)現(xiàn)有以下錯誤信息:
Only secure origins are allowed (see: https://goo.gl/Y0ZkNV).
“只有在安全來源的情況才才被允許”。錯誤信息里還包含了一個提示鏈接,我們不妨打開這個
鏈接https://goo.gl/Y0ZkNV)看看。原來,為了保障用戶的安全,Chrome瀏覽器認為只有安全的
來源才能開啟定位服務。那什么樣才算是安全的來源呢?在打開鏈接的頁面上有這么一段話:
“Secure origins” are origins that match at least one of the following (scheme, host, port) patterns:(https, *, *)
(wss, *, *)
(*, localhost, *)
(*, 127/8, *)
(*, ::1/128, *)
(file, *, —)
(chrome-extension, *, —)
This list may be incomplete, and may need to be changed. Please discuss!
大概意思是說只有包含上述列表中的scheme、host或者port才會被認為是安全的來源,現(xiàn)在這個列表還不夠完整,后續(xù)可能還會有變動,有待討論。
如果需要在域名訪問的基礎上實現(xiàn)地位位置的定位,那我們只能把http協(xié)議升級為https了。
html>
body,?html,?#allmap?{
width:?100%;
height:?100%;
overflow:?hidden;
margin:?0;
font-family:?"微軟雅黑";
}
地圖展示//?百度地圖API功能
var?map?=?new?BMap.Map("allmap");????//?創(chuàng)建Map實例
var?point?=?new?BMap.Point(116.331398,?39.897445);
map.centerAndZoom(point,?30);
map.enableScrollWheelZoom(true);?????//開啟鼠標滾輪縮放
//添加地圖類型控件
map.setCurrentCity("北京");
var?geolocation?=?new?BMap.Geolocation();
geolocation.getCurrentPosition(function?(r)?{
if?(this.getStatus()?==?BMAP_STATUS_SUCCESS)?{
var?mk?=?new?BMap.Marker(r.point);
map.addOverlay(mk);
map.panTo(r.point);
point?=?r.point;
console.log(r.point.lng?+?','?+?r.point.lat);
alert('您的位置:'?+?r.point.lng?+?','?+?r.point.lat);
getName(point);
}
else?{
alert('failed'?+?this.getStatus());
}
},?{?enableHighAccuracy:?true?})
function?callback(data)?{
console.log(data);
console.log('轉化后:'+data.points[0].lng?+?','?+?data.points[0].lat);
alert('您的真實位置:'?+?data.points[0].lng?+?','?+?data.points[0].lat);
var?newpoint?=?new?BMap.Point(data.points[0].lng,?data.points[0].lat);
var?mk?=?new?BMap.Marker(newpoint);
map.addOverlay(mk);
map.panTo(newpoint);
getName(newpoint);
}
function?getName(point)?{
var?geoc?=?new?BMap.Geocoder();
geoc.getLocation(point,?function?(rs)?{
var?addComp?=?rs.addressComponents;
console.log(addComp);
alert(addComp.province?+?",?"?+?addComp.city?+?",?"?+
addComp.district?+?",?"?+?addComp.street?+?",?"?+?addComp.streetNumber);
});
}
//瀏覽器H5定位
if?(navigator.geolocation)?{
navigator.geolocation.getCurrentPosition(function?(position)?{
//得到html5定位結果
var?x?=?position.coords.longitude;
var?y?=?position.coords.latitude;
console.log(position.coords);
alert('您的位置:'?+?x?+?','?+?y);
//由于html5定位的結果是國際標準gps,所以需要轉為百度坐標系,from=1,
to=5
var?newpoint?=?new?BMap.Point(x,?y);
var?convertor?=?new?BMap.Convertor();
var?pointArr?=?[];
pointArr.push(newpoint);
convertor.translate(pointArr,?1,?5,?callback)
},?function?(e)?{
console.log(e);
alert(e.message);
})
}?else?{
alert("沒有定位權限");
}
在https站點下,通過對比我們發(fā)現(xiàn)百度api獲取的坐標和瀏覽器H5經(jīng)過坐標轉換獲得的坐標是一致的。所以要想在瀏覽器中通過百度api獲取精確的定位,最好把站點升級為https協(xié)議。
總結
以上是生活随笔為你收集整理的js百度地图android定位不准,百度地图js定位不准的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python excel 数据匹配实现v
- 下一篇: oracle实验四运动会,实验四orac