Маршрутизация данных для MKMapKit в iOS6

Раньше я выполнял маршрутизацию в приложениях iOS, но с iOS6 мы теперь отображаем карты Apple, что вызывает проблему, потому что мы используем данные маршрутизации Google, а если мы используем данные Google, мы должны отображать их на карте Google.

Я искал, но, насколько я могу судить, Apple не предоставляет никаких данных о маршрутизации. На данный момент ближе всего к ответу, кажется, когда Apple говорит Apps that consume direction information do so by sending an appropriate request to the Maps app, which then handles the task of displaying that information to the user., что для меня означает, что приложение «Карты» будет открыто для отображения маршрута и выведения пользователя из нашего приложения.

  • Где мы можем получить оперативные данные о маршрутизации, которые можно использовать в приложениях iOS6, использующих карты Apple?

person Chris    schedule 05.10.2012    source источник


Ответы (4)


Вы можете использовать API Open Directions от MapQuest. Это бесплатно и, кажется, не имеет никаких ограничений. У них также есть лицензионный API с бесплатным дневным лимитом.

Я считаю, что вам нужно только разместить их логотип где-нибудь в своем приложении.

person Jan S.    schedule 14.10.2012

К сожалению, MapKit не предоставляет данные маршрутизации.

В iOS 6 и более поздних версиях Map Kit предлагает поддержку для предоставления пользователю указаний на основе карты. Приложения могут быть поставщиками маршрутов или они могут использовать само приложение «Карты» для предоставления маршрутов. Приложения, которые используют информацию о направлении, делают это, отправляя соответствующий запрос в приложение «Карты», которое затем выполняет задачу отображения этой информации пользователю. Однако, если вы реализуете собственное навигационное приложение, вы можете зарегистрировать его как приложение маршрутизации, то есть поставщика маршрутов. Когда приложение «Карты» получает запросы направления от пользователя (или других приложений), оно может перенаправить эти запросы в ваше приложение для отображения.

Источник

Итак, вам лучше всего использовать внешние данные маршрутизации или приложение карт. Поскольку Google запрещает использовать свои данные маршрутизации без отображения на карте Google, вы можете проверить API bing (здесь ). Не сразу видно, что они требуют, чтобы вы использовали карты bing с данными маршрутизации bing, но они также предоставляют API статической карты (здесь).

В качестве альтернативы вы можете посмотреть этот проект на github. Он показывает, как загружать фрагменты карты Google в виде карты.

Удачи.

person Mongo    schedule 10.10.2012

Apple может предоставить информацию о маршрутах в будущем, но пока она доступна только в приложении «Карты».

Одним из решений является использование плиток Google в представлении карты. Код для ClassicMap имеет полную реализацию этого и доступен с либеральной лицензией. Используйте его в качестве временной меры, пока Apple не предоставит информацию о маршрутизации.

person nevan king    schedule 15.10.2012
comment
И если вы следите за этим, ClassicMap был удален из магазина приложений в тот момент, когда более старшие сотрудники Apple поняли, что происходит. Вы не можете заменить фрагменты карты в представлении карты. - person Daniel; 16.10.2012
comment
@ Даниэль, я знаю, что его нет в магазине, но я не знаю причины. Вы точно знаете, почему его вытащили? Apple ничего не имеет против замены плиток, на самом деле у них есть сеанс WWDC, который показывает вам, как именно это сделать, используя наложения. И я могу указать по крайней мере на 2 приложения в магазине, которые используют плитки Google в представлении карты (Maps+ и MyMap+, которые были обновлены только вчера). - person nevan king; 16.10.2012
comment
Мне нужно проверить те 2 приложения, которые вы упомянули. Когда я загрузил ClassicMap, мне было совершенно очевидно, что он придирается к Apple. Замена плиток, чтобы сделать их похожими на Карты Google, но без товарного знака Google, а также оставить юридическую ссылку внизу. По сути, это действовало как приложение Apple, которое было взломано. Я уверен, что это не из-за использования данных Google, а из-за того, что вся инфраструктура и юридические лица остались на месте, как и Apple. Наложение немного отличается от полного обхода плиток Apple. - person Daniel; 16.10.2012
comment
Я действительно считаю, что MyMap+ не использует MKMapView для плиток Google. Maps+ вроде есть. В любом случае ни один из них не показывает юридическую ссылку Apple на плитках Google Maps. - person Daniel; 16.10.2012

Вы правы, в условиях использования API Google в 10.1.1, пункт g:

(g) Запрещается использовать Контент без карты Google. Вы не должны использовать или отображать Контент без соответствующей карты Google, за исключением случаев, когда это явным образом разрешено в Документации по API Карт или получено письменное разрешение от Google. В любом случае вы не должны использовать или отображать Контент на карте, отличной от Google, или в сочетании с ней. Например, вы не должны использовать геокоды, полученные через Сервис, в сочетании с картой, отличной от Google. В качестве другого примера вы не должны отображать изображения Просмотра улиц рядом с картой, отличной от Google, но вы можете отображать изображения Просмотра улиц без соответствующей карты Google, поскольку документация API Карт прямо разрешает вам это делать.

Доступ к API Google был до iOS 6 прозрачным и осуществлялся Apple через платформу MapKit, которая занималась всеми лицензированием, сборами и т. д. для нас, разработчиков, нам не нужно было об этом беспокоиться.

Теперь, когда Apple использует свой собственный картографический сервис, у нас нет доступа к API Google через инфраструктуру MapKit, как вы говорите, и маршрутизация с помощью MapKit невозможна так, как вы хотите.

Таким образом, вы должны поддерживать связь с Google, но проблема в том, что теперь вы будете использовать данные Google без карты Google.

Это проблема, и если ваше приложение популярно, и Google понимает, что они могут решить создать проблему с вами.

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

person Daniel    schedule 16.10.2012