国内三大地图厂商转换api
以下为国内三大地图的坐标系转换api介绍:
腾讯地图坐标转换服务: lbs.qq.com/webservice_…
百度地图坐标转换服务: developer.baidu.com/map/wiki/in…
高德地图坐标转换服务: lbs.amap.com/api/webserv…
产生原因
这么多坐标系为什么不统一用WGS84呢,这就是国家地理测绘总局对于出版地图的要求,出版地图必须符合GCJ02坐标系标准了,也就是国家规定不能直接使用WGS84地理坐标系。
那么产生定位差的问题就很明显了,你把GPS芯片获取到的WGS84坐标系的坐标用到地图里,填错坑了。
解决
如果你使用的是leaflet这一类的开放地图,那么就把获取到的坐标点转换成地图展示的坐标系点就可以了,例:
var map = L.map('allmap',{
minZoom: 4,
maxZoom: 13,
crs: L.CRS.EPSG4326 // 设置成
}).setView([48.505, 3.09], 13);
例如在微信公众号中获取到的经纬度然后使用腾讯地图服务获取地址当前地址:
wx.getLocation({
success: (data) => {
let x = data.latitude;
let y = data.longitude;
let API_KEY = 'XXX-XXX';
jsonp(`https://apis.map.qq.com/ws/coord/v1/translate/?locations=${x},${y}&type=1&key=${API_KEY}&output=jsonp`, null, (err, res) => {
if (!err && res.status === 0) {
jsonp(`https://apis.map.qq.com/ws/geocoder/v1/?location=${res.locations[0].lat},${res.locations[0].lng}&key=${API_KEY}&get_poi=1&output=jsonp`, null, (err, data) => {】
if (err || data.status !== 0) {
... //do something
} else {
... //do something error
}
});
} else {
... //do something error
}
});
},
cancel: (res) => {
... //do something cancel
}
});