Принудительно использовать MapKit использовать только кэшированные тайлы карты / программно отключить сеть - PullRequest
11 голосов
/ 24 декабря 2009

Мы столкнулись с такой проблемой.

Разрабатываем приложение для путешествий. Чтобы убедиться, что пользователь не тратит много денег на оплату роуминга в нашем приложении, мы решили реализовать опцию настроек, позволяющую пользователю просматривать только кэшированные карты. Поэтому мы позволяем пользователю решать, хочет ли он загружать карты из Интернета или он хочет сэкономить деньги и просматривать кэшированные карты (хранятся в Library / Caches / MapTiles / MapTiles.sqlitedb).

Мы не можем найти способ реализовать это. Есть ли способ отключить сеть программно в этом случае? Или заставить MapKit использовать только кэшированные тайлы? Мы подумали об изменении APN программно для этой опции, чтобы заставить MapKit отключиться. Можно ли программно изменить APN?

Спасибо!

Ответы [ 4 ]

4 голосов
/ 24 декабря 2009

Приложения iPhone SDK не имеют доступа к настройкам сетевого адаптера, и я ничего не знаю в API MapKit, который позволил бы вам контролировать его использование в Интернете. Лучшим вариантом в этом случае, вероятно, является представление оповещения о том, что пользователь должен включить режим полета или отключить роуминг данных.

2 голосов
/ 14 июля 2010

использовать openstreetmap думаю, что коммерческая сторона облака позволяет создавать автономные карты

http://developers.cloudmade.com/projects/show/iphone-sdk

Библиотеки, которые помогают разработчикам iPhone использовать карты OSM route-me - это библиотека с открытым исходным кодом, используемая в ряде приложений для iPhone для отображения карт OSM. CloudMade iPhone Maps Library - это библиотека с открытым исходным кодом, которая обеспечивает высокоуровневый доступ к плиткам карт на основе OSM CloudMade с различными размерами и разными стилями. Джон МакКеррелл перенес алгоритм маршрутизации с gosmore для работы на iPhone и успешно сгенерировал основные маршруты. Более сложные маршруты ломают iPhone на данный момент

0 голосов
/ 19 февраля 2015

Есть несколько способов. Один из них - использовать собственное наложение плиток и реализовать алгоритм кэширования либо в URLForTilePath:, либо в loadTileAtPath: result:

Очень хорошо работает с открытым доменом и некоторыми частными. Не кеширует стандартные Apple Maps.

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

0 голосов
/ 25 декабря 2009

приложение Google Map выполняет функцию кэширования ... MapKit кажется нет, я думаю, Apple добавит эту функцию в следующую версию SDK ...

...