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

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

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

То, что я знаю по всему Китаю:

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

Возникает вопрос:

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

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

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

Заглядывая вперед, спасибо!

Ответы

Ответ 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);
    }
  }

  //...

}

Вы можете заменить my.image.server на ditu.google.cn и использовать внешний серверный API для получения изображений в виде плитки. В Картах вы можете установить OnCameraChangeListener, чтобы приложение загрузило фрагменты с внешнего сервера, когда карта масштабируется или панорамируется.

Подробнее: https://developers.google.com/maps/documentation/android/tileoverlay

Ответ 2

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

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

baidus map api home http://dev.baidu.com/wiki/map/in...

sogous map api home http://map.sogou.com/api/

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