Есть ли способ сохранить автономную карту google в гибридном мобильном приложении на ионном?

Я планирую разработать гибридное мобильное приложение с использованием ионного. Одна из функций, которые мне нужны, - это офлайн-карта google. Есть ли способ, как это сделать?

Ответ 1

Это зависит от требований вашего приложения, будет ли это возможно. Являются ли ваши пользователи на "современных" устройствах A.K.A полностью поддерживаемыми HTML5? Нужно ли вашим пользователям просматривать/редактировать карту по всему миру или только в определенной области? Действительно ли карта должна быть предоставлена ​​Google? Я рассмотрю некоторые проблемы ниже, чтобы указать, что вы можете решить эту проблему.

Вам действительно нужны карты Google? (Самый оптимальный scenerio)
Во-первых, вам действительно нужны карты Google? Также уместно: насколько ваши пользователи должны увеличить свои карты? Если это могут быть любые карты, а масштабирование не имеет особого приоритета (если это так, в том числе все плитки для карт, чтобы приложение могло использовать все хранилище), вы, вероятно, могли бы использовать карты-плитки в качестве упакованной части вашего приложения и отображать их с библиотекой, например http://leafletjs.com/. Библиотека хорошо документирована и предоставляет интерфейс карты для множества картографических провайдеров. Он будет способен настроить это, чтобы использовать собственные локальные карты. При необходимости вы можете включать в себя карты-плитки для нескольких уровней масштабирования и ограничить минимальные/максимальные уровни масштабирования на плитки, которые вы действительно имеете. Это заставит ваши карты работать в автономном режиме.

Я не могу или не хочу предоставлять свои собственные плитки, чтобы убедиться, что вы действительно заглянули в эту опцию, есть системы, которые предоставляют карты-плитки, которые вы могли бы использовать ( например, https://www.mapbox.com/)
Хорошо, так что вы действительно не хотите делать то, что я предлагал. Какие сейчас варианты? Картинговые решения Javascript обычно создают фрагменты на основе местоположения карты, которую вы хотите видеть, и уровня масштабирования. Эти плитки запрашиваются у поставщика плитки. Я не знаю, как реализовать это для Google точно, вам могут потребоваться некоторые исследования по этому вопросу - я постараюсь помочь вам увидеть направление. Будут запросы на получение плит с серверов. Я проверил с http://maps.google.com, какие изображения загружаются при попытке навигации по карте: (пример (нажмите)). Узнайте, какой URL-адрес используется в вашей ситуации, нам понадобится этот URL-адрес позже (просто просмотрите вкладку сети в консоли браузера и посмотрите, какие запросы выполняются при прокрутке на вашей карте). Когда нам нужно, чтобы наши пользователи работали в определенной области, когда в автономном режиме, мы могли бы использовать рабочих сервисов для кэширования ответов этих запросов, когда мы в сети, и обслуживать эти кеши, когда мы в автономном режиме. Подробнее об обслуживающих работников здесь (щелкните).
Преимущество: реальная автономная карта-функциональность для любого фрагмента, который вы посещали ранее (до тех пор, пока ваш кеш не был переполнен, в зависимости от вашей работы рабочих служб и поддерживаемых браузерами/устройствами).
Недостатки. Никакой поддержки плиток, которые никогда не помещались в кеш (AKA: никогда не видели раньше). Еще один: это будет работать только для устройств, поддерживающих сервис-работников. Может быть вариант в ситуациях, когда вам либо не нравятся пользователи, использующие "старые" устройства, либо где вы можете управлять выбором пользовательского устройства. Обратите внимание, что использование пешеходного перехода может облегчить ваши усилия по развитию здесь, так как вам нужно только учитывать одно время выполнения браузера: но пешеходный переход также не поддерживает старые устройства.
Тем не менее: Это решение может быть прекрасным для людей, которым необходимо будет работать в определенной области, что может быть правдой для случая, предоставленного @vipul-r. Если вы или ваши пользователи заранее знаете, где им нужно их карты для работы, вы можете инструктировать/помогать им в загрузке и кешировании своих карт правильно.

Если вы не можете работать ни с одним из этих двух решений, то я очень сомневаюсь, что это будет способ сделать это. Я не вижу другого способа, насколько мне известно.