Google Maps Android API v2 в Китае - загрузка карты заняла около часа

Что у меня есть: нативное приложение для Android, которое использует Android Maps API v2 (нативная библиотека)

Все хорошо работает в Гонконге и Украине. Проблемы возникли, как только мы вступили в китайскую границу. У нас есть следующие проблемы:

Что я знаю о Китае:

  • Google там не очень дружелюбен, но наше приложение не является тем, которое использует карты Google в Китае, поэтому моя проблема, вероятно, не новая.
  • Существует возможность использовать карты Google, размещенные локально в Китае, - ditu.google.cn, но, как только мы используем собственное приложение, теперь нет возможности использовать веб-вид карты вместо собственной реализации (у нас есть много настроек)
  • Я знаю, что лучше не использовать HTTPS с картами Google (вы можете прочитать об этом здесь: Google Maps Geolocation API для Китая)

Вопрос в том:

  • Можем ли мы как-то улучшить загрузку карты? Можем ли мы как-то переопределить источник карты Google, чтобы использовать ditu.google.cn?
  • Можем ли мы как-то отключить HTTPS в Map API?
  • Любое другое решение этой проблемы, которое может быть применено на основе сервисов Google. Может быть, есть какие-то недокументированные функции?

То, что не ожидал в качестве ответа, является чем-то вроде "Используйте Baidu". Я знаю Baidu, и это вариант резервной копии, как только у них есть api docs на китайском языке.

Стоит добавить, что API геокодирования на основе ditu.google.cn работает хорошо.

С нетерпением жду, спасибо!

2 ответа

Решение

Может быть, вы не можете переопределить исходный источник плитки. Но вы можете использовать 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

У Google до сих пор нет лицензии на публикацию карт в Китае (по крайней мере, как гласит моя последняя информация). Вполне возможно, что в ближайшем будущем сервисы Google Map будут заблокированы.

Многие китайские веб-сайты, в том числе и наши, используют Google JS и API своих сервисов. Среди них API-интерфейсы геокодирования Google. в Китае baidu (NASDAQ:BIDU) и sogou [второстепенная поисковая система, часть sohu (NASDAQ:SOHU)] предоставили онлайн-карты, а также API,

Главная страница API-интерфейса baidu: http://dev.baidu.com/wiki/map/in...

карта API sogou дома является http://map.sogou.com/api/

на самом деле, в Китае, на данный момент, API Google Maps все еще доступны сейчас. Начиная с недавних новостей chinatech.us, Google China прошла ежегодную проверку и получила больше возможностей для получения бизнес-лицензии на онлайн-карту, поэтому 3 API есть и доступны.

Другие вопросы по тегам