Использование Google Maps V3 в автономном режиме, например, с кеш-манифестом? - PullRequest
16 голосов
/ 09 июня 2011

Я пишу мобильное приложение HTML5, которое использует Google Maps V3 с пользовательским слоем плиток OpenStreetMap.

Плитки OSM (из tile.openstreetmap.org) настроены на кеширование на более чем 24 часа, и я использую манифест кеша для всех моих HTML / JS / CSS.

Таким образом, теоретически приложение можно использовать в автономном режиме, за исключением того, что интерфейс Карт Google не устраивает в автономном режиме.

Он всегда хочет позвонить на сервер Карт Google по номеру http://maps.google.com/maps/api/js?sensor=false&region=GB - при сбое Google Maps не удается загрузить.

Есть ли способ использовать API Карт Google V3 в автономном режиме?

Могу ли я кэшировать манифест http://maps.google.com/maps/api/js?sensor=false&region=GB, или это будет плохой ход?

(Извините заэто скорее вопрос для начинающих, дайте мне знать, если я смогу объяснить лучше!)

Ответы [ 4 ]

14 голосов
/ 24 января 2012

Сами кодировщики Google решили эту проблему, и, к сожалению, информация не очень хорошо распространена.Но да, вы можете использовать кеш-манифест, чтобы сделать именно то, что вы описали.

Обязательные показания

  1. Сначала взгляните на пост в блоге Google Code здесь: http://googlecode.blogspot.com/2010/04/google-apis-html5-new-era-of-mobile.html
  2. Затем прочитайте в собственном сообщении штата Миссури: http://blogs.missouristate.edu/web/2010/05/12/google-maps-api-v3-developing-for-mobile-devices/

Техника

  • Вы должны кэшировать каждый URL, используемыйКарты Google
  • Использование методов для борьбы с упрямыми методами кэширования Chrome и Firefox, удалив их с "автономных веб-сайтов"
  • Все настройки должны быть на стороне клиента в javascript

Ваш файл кэша будет выглядеть (согласно штату Миссури):

CACHE MANIFEST
/map/mobile/examples/template.aspx
/map/mobile/examples/template.css
/map/mobile/examples/template.js
NETWORK:
http://maps.gstatic.com/
http://maps.google.com/
http://maps.googleapis.com/
http://mt0.googleapis.com/
http://mt1.googleapis.com/
http://mt2.googleapis.com/
http://mt3.googleapis.com/
http://khm0.googleapis.com/
http://khm1.googleapis.com/
http://cbk0.googleapis.com/
http://cbk1.googleapis.com/
http://www.google-analytics.com/
http://gg.google.com/

Предостережения

Вы должны будете полностью основываться на HTML5 и понимать влияние, которое это окажет на ваших пользователей.Эта ситуация удобна, когда либо ваши пользователи обновляют стандарты / устройства для браузеров, либо вы контролируете выбор пользователей.

Надеюсь, это поможет.

0 голосов
/ 08 сентября 2016

У меня был проект Google Map, который мне нужен был в автономном режиме. Я обнаружил, что Bing Maps (https://www.bingmapsportal.com/ISDK/AjaxV7) гораздо лучше в автономном режиме, и переключил свой проект на это, и я счастлив. Я запускал версии Google и Bing бок о бок в автономном режиме, и Bing был великолепен. Тогда как Google сразу же потерпит неудачу при загрузке тайлов, карты Bing кэшируют больше тайлов и, по-видимому, даже изменяют размер увеличенных тайлов, чтобы по крайней мере дать вам что-то в автономном режиме.

Я знаю, что вопрос здесь о картах Google; но если вы не заботитесь о bing против google и действительно нуждаетесь в автономной поддержке, я настоятельно рекомендую попробовать карты Bing. Это решило это для меня.

0 голосов
/ 08 июля 2015

Не возможно!

URL-адреса CDN карты Google имеют динамический характер,

В разделе CACHE файлов манифеста кэша HTML5 недопустимы символы подстановки

Мы не можем иметь что-то вроде

CACHE MANIFEST
/css/style.css
/js/libs/modernizr-2.0.6.min.js
/js/libs/jquery-2.1.4.js
http://mts0.googleapis.com/*
http://mts1.googleapis.com/*
http://fonts.googleapis.com/*
NETWORK:
*
0 голосов
/ 11 июля 2011

У меня есть http://maps.google.com/maps/api/js?sensor=false в CACHE разделе cache.manifest вместе с моими файлами приложений, и нет никаких проблем.

Хотя, я думаю, вам также необходимо кэшировать другие файлы, которые запрашивает API Карт Google. Вы можете взглянуть на файлы, загруженные вашим приложением, и включить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...