Sew*_*ird 2 javascript google-maps
我正在使用源自谷歌地图的纬度和经度在百度地图(中国的主要地图服务)中实施地图视图.我发现我的位置(主要是在上海附近)一直"关闭"大约一公里,但是!
进行线性调整会使百度位置大致(+ - 几米)出现在正确位置:
//Declaring my Baidu map marker's properties
...
lat : gm_location.lat + 0.00575,
lng : gm_location.lng + 0.00668,
...
Run Code Online (Sandbox Code Playgroud)
虽然这可以满足我的特殊需求,但我不喜欢这些神奇的数字.任何人都有任何洞察力来弥补这种抵消?
Dan*_*scu 11
谷歌使用哪种谷歌地图.com/map或谷歌.cn/map?卫星或街景?在所有情况下,答案是否定的 - 坐标将不对应百度地图POI,但原因略有不同.
首先,由于百度不在中国以外提供任何有用的地图,让我们关注的问题是,
Google地图在中国境内是否协调,是否映射到百度地图中的相同位置?
答案是不.百度地图使用自己的BD-09坐标系统,而谷歌地图使用中国GCJ-02标准(用于google.com/maps或.cn上的街道地图)或WGS-84用于谷歌上的卫星图像.com卫星视图.
GPS坐标(WGS-84)和谷歌街道地图坐标(GCJ-02)不会映射到百度地图上的相同位置,正如此片段所示(我没有在答案中包含该片段,因为它无法正常运行SO包含脚本的方式 - 但你可以看到我给出的另一个答案中的代码.

在上海周围使用线性修正可能有效,但中国其他地区的价值将发生变化.
将Google坐标转换为百度地图坐标的官方方法是使用百度地图API来执行此操作.
API有两个版本:
据称在http://developer.baidu.com/map/changeposition.htm上记录的"服务器"版本需要获取应用程序密钥
在一个版本http://api.map.baidu.com/ag/coord/convert,这些会用来由百度地图坐标转换演示通过http://developer.baidu.com/map/jsdemo/demo/convertor.js和不需要应用程序密钥.
我们来看看上海人民英雄纪念碑的谷歌街道地图(GCJ-02)坐标,并将它们转换为百度地图坐标:
curl "http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=121.4914&y=31.2423"
Run Code Online (Sandbox Code Playgroud)
将输出
{"error":0,"x":"MTIxLjQ5Nzk5OTg3MzM4","y":"MzEuMjQ3OTc1ODQwMTk2"}
Run Code Online (Sandbox Code Playgroud)
坐标是base64编码的,并解码为
121.49799987338, 31.247975840196
Run Code Online (Sandbox Code Playgroud)
如果map.baidu.com允许您输入纬度/经度坐标,您将登陆人民英雄纪念碑.
百度的API仅提供转换为 BD-09.
转换也可以脱机运行,公式可以在中文博客上找到.GCJ-02,WGS-84和B-09之间的转换可以使用geoChina或eviltransform等库进行.
| 归档时间: |
|
| 查看次数: |
5537 次 |
| 最近记录: |