我正在实现一个地图视图在百度地图(中国的主要地图服务)使用纬度和经度源自谷歌地图。我发现我的位置(主要是上海周围)一直“离”大约1公里!
通过线性调整,百度的位置大致出现在(+-几米)正确的位置:
//Declaring my Baidu map marker's properties
...
lat : gm_location.lat + 0.00575,
lng : gm_location.lng + 0.00668,
...虽然这将满足我的特殊需要,但我不喜欢这些神奇的数字。有谁能洞察这种抵消是从何而来?
发布于 2015-04-08 11:02:22
你使用哪个谷歌地图,google.com/map还是google.cn/map?卫星还是街景?在所有情况下,答案都是无坐标不符合百度地图POI,但原因略有不同。
首先,从除了中国,百度没有提供任何有用的地图开始,让我们关注这个问题,
谷歌地图是否在中国内部进行坐标,映射到百度地图的同一位置?
答案是否定的。百度地图使用自己的BD-09坐标系。,而Google则使用中国的GCJ-02标准( google.com /map或.cn上的街头地图),或者使用WGS-84表示google.com卫星视图地图上的卫星图像。
GPS坐标(WGS-84)和Google坐标(GCJ-02)并不像这个片段演示了一样映射到百度地图上的相同位置(我没有在答案中包含代码片段,因为它不工作,因为它包含脚本--但您可以在这个我给出的另一个答案中看到代码)。

在上海附近使用线性修正可能会奏效,但在中国的其他地区,这一数值将发生变化。
如何补偿偏移量
将Google坐标转换为百度地图坐标的官方方法是使用百度地图API进行转换。
API有两个版本:
让我们把上海人民英雄纪念碑的谷歌街道地图(GCJ-02)坐标转换成百度地图坐标:
curl "http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=121.4914&y=31.2423"威尔输出
{"error":0,"x":"MTIxLjQ5Nzk5OTg3MzM4","y":"MzEuMjQ3OTc1ODQwMTk2"}坐标是base64 64编码的,并解码到
121.49799987338, 31.247975840196如果map.baidu.com允许您输入lat/lon坐标,您将在人民英雄纪念碑着陆。
百度的API只提供到BD-09的转换。
转换也可以脱机运行,公式可以找到中国博客。GCJ-02、WGS-84和B-09之间的转换可以使用geoChina或逆变换之类的库来执行。
发布于 2015-04-04 10:21:06
法律规定,中国的公司不得出口地图数据,不得通过抵消来伪装外国公司。有关更多详细信息,请参阅https://help.openstreetmap.org/questions/37560/map-offset-in-china。
从maps.google.com获得的坐标可能是错误的,而百度中的坐标可能是正确的。
发布于 2016-11-11 21:42:56
百度地图API有一个服务,将谷歌地图坐标转换为百度地图坐标,但我认为它只对中国区域内的位置是准确的。其他地方还没开呢
看一下官方的演示
1
但请注意,在返回已转换的坐标之前,会有很大的延迟。
var x = 116.32715863448607;
var y = 39.990912172420714;
var ggPoint = new BMap.Point(x,y); // step 1 - create a Baidu map point from Google Maps coordinate
translateCallback = function (data){
if(data.status === 0) {
var marker = new BMap.Marker(data.points[0]); // step 3 - u get the offset coordinate here
bm.addOverlay(marker);
bm.setCenter(data.points[0]);
}
}
setTimeout(function(){
var convertor = new BMap.Convertor();
var pointArr = [];
pointArr.push(ggPoint);
convertor.translate(pointArr, 3, 5, translateCallback); // step 2 - pass the point as an array to the translate service
}, 1000);https://stackoverflow.com/questions/29444803
复制相似问题