Google Maps Android API v2在中国 - 地图加载大约需要一个小时

Evg*_*kiy 14 android google-maps android-maps google-maps-android-api-2 android-maps-v2

我有什么:使用Android Maps API v2(本机库)的原生Android应用程序

香港和乌克兰的一切都很好.一旦我们踏入中国边境,问题就出现了.我们有下一个问题:

我对中国的了解:

  • 谷歌在那里并不友好,但我们的应用程序不是在中国使用谷歌地图的应用程序,所以我的问题可能不是一个新的.
  • 可以选择使用在中国本地托管的谷歌地图 - ditu.google.cn,但是一旦我们使用原生应用程序,现在就没有选择使用地图的Web视图而不是本机实现(我们有很多自定义)
  • 我知道,最好不要在谷歌地图上使用HTTPS(你可以在这里阅读:中国的Google Maps Geolocation API)

问题是:

  • 我们能以某种方式改善地图的负荷吗?我们可以以某种方式覆盖谷歌地图来源以使用ditu.google.cn吗?
  • 我们可以在Map API中以某种方式禁用HTTPS吗?
  • 围绕此问题的任何其他解决方案,可以基于谷歌服务应用.也许有一些无证的功能?

什么是没有想到的答案是"使用百度".我知道百度,这是一个veeryyy备份选项,只要他们有一个api docs in chineese.

需要补充的是,基于ditu.google.cn的Geocoding API运行良好.

期待,谢谢!

Haf*_*rdi 1

也许您无法覆盖原始图块源。但是您可以使用 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);
    }
  }

  //...

}
Run Code Online (Sandbox Code Playgroud)

您可以替换my.image.server为ditu.google.cn并使用外部服务器 API 来获取图块图像。在地图中,您可以设置OnCameraChangeListener,以便应用程序在地图缩放或平移时从外部服务器加载图块。

了解更多: https: //developers.google.com/maps/documentation/android/tileoverlay