我拥有的:使用android Maps API v2(原生库)的原生android应用程序
香港和乌克兰一切都很好。我们一踏入中国边境,问题就出现了。我们有下一个问题:
- 地图加载时间从30分钟到大约一小时
- 即使加载了它,地图分辨率也很低http://i.gyazo.com/d4f40e1a225bd48a90087c39a502e4a6.png
- 谷歌地图自己运作:http://i.gyazo.com/dc85e3618c285ced5bba799053dd0306.png
我对中国的了解:
- 谷歌在那里并不友好,但我们的应用程序不是中国使用谷歌地图的应用程序,所以我的问题可能不是新的
- 可以选择使用中国本地托管的谷歌地图-同上,但一旦我们使用本地应用程序,现在就无法使用地图的web视图而不是本地实现(我们有很多自定义)
- 我知道,最好不要在谷歌地图上使用HTTPS(你可以在这里阅读:谷歌地图API中国地理位置)
问题是:
- 我们能以某种方式提高地图的负载吗?我们能以某种方式覆盖谷歌地图源以使用ditu.google.cn吗
- 我们是否可以以某种方式禁用Map API中的HTTPS
- 围绕这个问题的任何其他解决方案,都可以基于谷歌服务应用。也许有一些未记录的功能
没有想到的答案是"使用百度"。我知道百度,只要他们有中文的api文档,这就是一个非常好的备份选项。
值得补充的是,基于ditu.google.cn的Geocoding API运行良好。
向前看,谢谢!
也许您无法覆盖原始tile源。但您可以使用TileOverlay从外部服务器获取地图平铺。
用法示例:
TileProvider tileProvider = new UrlTileProvider(256, 256) {
//...
@Override
public URL getTileUrl(int x, int y, int zoom) {
/* Define the URL pattern for the tile images */
String s = String.format("http://my.image.server/images/%d/%d/%d.png",
zoom, x, y);
if (!checkTileExists(x, y, zoom)) {
return null;
}
try {
return new URL(s);
} catch (MalformedURLException e) {
throw new AssertionError(e);
}
}
//...
}
您可以将my.image.server
替换为ditu.google.cn
,并使用外部服务器API获取磁贴图像。在地图中,您可以设置OnCameraChangeListener,这样当地图缩放或平移时,应用程序将从外部服务器加载平铺。
阅读更多:https://developers.google.com/maps/documentation/android/tileoverlay
谷歌在中国仍然没有地图发布许可证(至少根据我的最新信息)很可能在不久的将来谷歌的地图服务将被屏蔽。
包括我们在内的许多中国网站都使用谷歌的JS以及他们的服务API,其中包括谷歌的地理编码API。在中国,百度(纳斯达克股票代码:BIDU)和搜狗(搜狐旗下的小型搜索引擎)都提供在线地图和API
百度的地图api主页http://dev.baidu.com/wiki/map/in...
搜狗的地图api主页http://map.sogou.com/api/
实际上,在中国,截至目前,谷歌地图api仍然可用。从中国科技网最近的消息来看,谷歌中国通过了年度检查,获得了更多的在线地图经营许可的机会,因此,3个API已经上市。