当前位置: 首页 > 知识库问答 >
问题:

谷歌地图是否将地图与百度地图中的同一位置进行协调?

督烨赫
2023-03-14

我正在使用latitude在百度地图(中国的主要地图服务)中实现一个地图视图

进行线性调整后,百度位置大致出现在正确的位置(几米):

//Declaring my Baidu map marker's properties
...
lat : gm_location.lat + 0.00575,
lng : gm_location.lng + 0.00668,
...

虽然这可以满足我的特殊需要,但我不喜欢这些神奇的数字。有人知道这种抵消是从哪里产生的吗?

共有3个答案

仉明知
2023-03-14

百度地图API确实提供了将谷歌地图坐标转换为百度地图坐标的服务,但我认为它只适用于中国地区内的位置。其他任何地方仍处于关闭状态

看看官方演示

http://developer.baidu.com/map/jsdemo.htm#a5_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);
吴品
2023-03-14

中国法律要求公司不得在没有偏移量的情况下出口地图数据以伪装外国公司。有关更多详细信息,请参阅https://help.openstreetmap.org/questions/37560/map-offset-in-china。

从地图获得的坐标。谷歌。com可能是错误的,而百度可能是正确的。

闻法
2023-03-14

你使用哪些谷歌地图,谷歌。com/map或谷歌。cn/地图?卫星或街景?在所有情况下,答案都是否定的——坐标不会与百度地图POI相对应,但原因略有不同。

首先,由于百度在中国以外没有提供任何有用的地图,让我们关注这个问题,

谷歌地图是否在中国境内协调,映射到百度地图中的同一位置?

答案是否定的。百度地图使用自己的BD-09坐标系,而谷歌地图使用中国的GCJ-02标准(用于google.com/maps或. cn上的街道地图),或用于google.com卫星视图地图上的卫星图像的WGS-84。

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"
    

    将输出

    {"error":0,"x":"MTIxLjQ5Nzk5OTg3MzM4","y":"MzEuMjQ3OTc1ODQwMTk2"}
    

    坐标是Base64编码的,并解码为

    121.49799987338, 31.247975840196
    

    如果映射。百度。com允许您输入纬度/经度坐标,您将降落在人民英雄纪念碑。

    百度的API只提供到BD-09的转换。

    转换也可以脱机运行,公式可以在中文博客上找到。GCJ-02、WGS-84和B-09之间的转换可以使用诸如geoChina或eviltransform之类的库来执行。

  •  类似资料:
    • 为了更熟悉Android编程,我一直在开发一款位置欺骗软件,我注意到我的应用程序似乎不会欺骗谷歌地图。它适用于Facebook和我测试过的其他一些应用程序,但即使关闭了Wifi和GPS,谷歌地图也知道我的确切位置,而不是我伪造的位置。我从Play Store(FakeLocation)下载了另一个欺骗应用,它似乎也没有欺骗谷歌。 这个人似乎也有同样的问题(Android Mock位置不适用于谷歌地

    • 我想知道是否有人在同一版本中实现了谷歌地图V2和百度地图;因为通用汽车在中国没有按预期工作? 或者我应该将项目分成两个分支?但是跳过维护两个分支会很好。

    • 我有谷歌地图搜索框,当我搜索特定的地方时,我想用(lat,lng)访问标记位置,当我通过拖放标记时,我可以准确地访问位置 但我希望在搜索完成时获得标记位置,而不使用&

    • 我想让谷歌地图按地址搜索 下面是我的cari.java代码 我想要的是,当我在editText中写出一条街的名字(例如:第1大道1152号),然后按下搜索按钮,它就会在谷歌地图上显示该位置(第1大道1152号)。 当我运行这个程序时,,,它说 “java.lang.RuntimeException:无法实例化activity ComponentInfo{Udin.GoogleMap2/Udin.G

    • 我试图实现一个地图使用谷歌地图与离子。我遵循了这个链接中的编码,但我得到的只是一个空白屏幕,不知道我哪里出错了。请帮忙 这是控制器 这是html文件 请帮忙。

    • 所以我看到了一个特殊的例外,我敢肯定的是谷歌地图的绘图代码。 我有一个片段,在那里我以编程方式添加了一个支持地图片段,然后我在其中操纵谷歌地图实例。 这是stacktrace: 我无法可靠地复制它(尽管这种情况经常发生),我已经查看了ReadWriteDirectByteBuffer和ShortToByteBufferAdapter,但没有任何东西突然出现在我面前。 有什么想法吗?