Android 在同一应用程序中使用谷歌地图和百度地图

Android 在同一应用程序中使用谷歌地图和百度地图,android,google-maps-android-api-2,Android,Google Maps Android Api 2,我想知道是否有人在同一版本中实现了谷歌地图V2和百度地图;因为通用汽车在中国没有按计划运作 或者我应该把项目分成两个分支?不过,最好不要维护两个分支。我的解决方案是像往常一样实现GM,但是如果用户有中国设置(通过设置),则使用静态地图,但静态地图是从百度而不是谷歌获取的 staticUrl = "http://api.map.baidu.com/staticimage?center=" + location.getLongitude() + "," + loca

我想知道是否有人在同一版本中实现了谷歌地图V2和百度地图;因为通用汽车在中国没有按计划运作


或者我应该把项目分成两个分支?不过,最好不要维护两个分支。

我的解决方案是像往常一样实现GM,但是如果用户有中国设置(通过设置),则使用静态地图,但静态地图是从百度而不是谷歌获取的

staticUrl = "http://api.map.baidu.com/staticimage?center=" 
                + location.getLongitude() + "," + location.getLatitude() 
                + "&width=" + width + "&height=" + width + "&zoom=15"
                + "&markers=" + location.getLongitude() + "," + location.getLatitude();
结果:

如果尝试实现真实地图解决方案,则不建议使用此方法。 由于我有不同的位置,仅由不同的国家使用,因此可以使用此解决方案


所以,我就是这样解决的。希望有人觉得这有帮助

如果您的服务器可以访问GM而没有问题(例如,您的主机不在中国大陆,或者它在中国大陆,但有未经审查的连接),为什么不让服务器从GM加载数据并将其发送给用户?在过去的几个项目中,我们都是这样做的,工作起来很有魅力

p、 您可以让php从GM获取请求的long/lat的静态映射,将其存储到服务器上的临时文件中,然后将url传递回临时文件。从用户的角度来看,他们将关注(静态)GM


p、 另外,如果您需要用户能够使用GM的UI(进行平移/缩放),那么您需要一个更复杂的php,它将改变从GM加载的所有JS,因此所有数据仍将被请求到您的服务器,然后服务器将获得地图-因此基本上避免客户端机器向GM服务器发送任何请求,但是,所有这些都将发送给您的。

此外,我发现,如果您在中国使用,它确实有效

在中国使用在线地图进行应用时,无论是谷歌地图还是百度,都存在一个问题

谷歌地图中的卫星视图使用“地球”(WGS-84)坐标。在中国,GMAP的地图视图使用“火星”坐标(GCJ-02),并且没有。百度地图使用“熊掌”坐标,偏移量不同。百度地图API有一个新的功能

在中国,全球定位系统和所有东西一样,都有一层额外的复杂性:)


如果您已构建此应用程序,请发布详细信息。拥有百度地图的英文界面将非常棒。

您可以同时使用谷歌地图和百度地图,但请确保将WGS-84坐标(世界上大多数国家都使用)转换为百度坐标()。下面是一些实现这一点的代码,基于:

//谷歌坐标
var gPoint=新的BMap.点(121.4914,31.2423);//朗,上海外滩博物馆的拉特-https://www.google.com/maps/@31.2423121.4914,19z
//gPoint=新的BMap.点(-122.0851053,37.4219593);//lon,Google Plex的lat(没有百度地图数据,但在山景中缩小)
var-labelOffset={offset:newbmap.Size(20,-10)};
//初始化映射
var map=newbmap.map('allmap');
地图中心和缩放(gPoint,15);
addControl(新的BMap.ScaleControl({anchor:BMap_anchor_TOP_LEFT}));//添加比例
addControl(新的BMap.NavigationControl());
map.addControl(新的BMap.MapTypeControl());//地图类型控制:街道/卫星/2.5D
map.enableCrollWheelZoom();//默认情况下禁用鼠标滚轮滚动
//添加谷歌标记和标签
var markerG=新的BMap.标记(gPoint);
地图叠加(markerG);
markerG.setLabel(新的BMap.Label('Google坐标标记出现在百度地图的错误位置,
,labelOffset)); //坐标转换。。。GCJ-02坐标。。。百度坐标 BMap.Convertor.translate(gPoint,2,函数(point){ var标记=新的BMap.标记(点); 添加覆盖图(标记); marker.setLabel(新的BMap.Label('转换为百度坐标:
+ point.lng+,'+ 拉特角+ “
(注意“+(map.getDistance(gPoint,point)).toFixed(2)+”米”的偏移量, labelOffset); map.addOverlay(新的BMap.Polyline([gPoint,point]);//在点之间画一条线 });

正文,html,#allmap{宽度:100%;高度:100%;溢出:隐藏;边距:0;字体系列:微软雅黑";}

参加聚会可能有点晚,但我最近偶然发现了一些可能对你有帮助的东西

我试过百度地图,但设置起来非常困难,使用起来也非常糟糕,所以我四处看看,突然,谷歌地图在没有vpn的情况下为我工作了

我意识到旧的谷歌中国服务器仍然处于活动状态,如果您尝试:

maps.google.cn


您会发现,使用google.cn地址创建iframe是可行的!

尝试使用这种方式与谷歌坐标

http://api.map.baidu.com/marker?location=39.916979519873,116.41004950566&output=html

就我个人而言,我建议你只去百度,你也知道,通用汽车在中国大陆的运作不是很好,即使你能把它添加到你的应用程序中,它也会让用户生气,因为谷歌服务在中国有问题——从我自己的经验来看,翻译经常无法连接,通用汽车也是一样,不用说谷歌的其他服务“随机”速度太慢或根本没有连接。主要问题是百度地图都是中文的:(@stephanruhl:另一个问题是百度在大中华区以外没有提供任何有用的地图数据。(它确实提供了,很可能是中文!)@DanDascalescu我之所以向百度提出这个问题,是因为这个问题是关于中国的(在中国生活了足够长的时间,这让我自然而然地想到了其他一些假设),但你下面的回答让一切都更清楚了:)微信在其国际版和中文版上也在做同样的事情。感谢您的解决方案。如果我们正在尝试实施“真实地图解决方案”,请您解释一下为什么不建议使用微信?