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.