使用百度地圖 API 進行瀏覽器定位時,PC 端定位偏差極大,移動端雖較準但仍與百度地圖標注不符。
H5 navigator.geolocation 在桌面瀏覽器中通常通過 IP 地址推算位置,精度僅能達到城市級,誤差可達數公里。
手機 GPS 獲取的是 WGS-84 坐標系(國際標準),而百度地圖使用 BD-09 坐標系(在 GCJ-02 基礎上再次加密)。直接將 GPS 坐標標注到百度地圖上會出現明顯偏移。
// 假設獲取到 GPS 經緯度 gpsLng, gpsLat
var convertor = new BMap.Convertor();
var pointArr = [new BMap.Point(gpsLng, gpsLat)];
convertor.translate(pointArr, 1, 5, function (data) {
if (data.status === 0) {
var bdPoint = data.points[0];
// 使用 bdPoint 在百度地圖上標注
}
});
定位不準多半是坐標系不匹配或定位源精度不足。針對不同終端採取相應策略,才能獲得理想效果。