- Как вызвать iPhone Maps для направлений с текущим местоположением в качестве начального адреса
- Пред iOS 6
- Обновление для iOS 6
- Apple URL Scheme Reference
- Map Links
- Как открыть Apple Maps направление движения, пройдя адрес
- 2 ответа
- How to invoke iPhone Maps for Directions with Current Location as Start Address
- 16 Answers 16
- Pre iOS 6
- Update for iOS 6
Как вызвать iPhone Maps для направлений с текущим местоположением в качестве начального адреса
Я знаю, что можно запустить приложение карт iPhone, вызвав openURL по URL-адресу карт Google с параметрами saddr и daddr со строками местоположения или широтой/долготой (см. Пример ниже).
Но мне интересно, возможно ли, чтобы начальный адрес был в виде «Current Location» закладки карт, чтобы я мог использовать код обработки местоположения приложения Maps. Мой поиск в Google был довольно бесплодным.
За исключением чего-то, чтобы вызвать текущую закладку местоположения вместо myLatLong .
Пред iOS 6
Вам нужно использовать Базовое местоположение, чтобы получить текущее местоположение, но с этой широтой/длинной парой вы можете получить Карты, чтобы направить вас оттуда к адресу или адресу улицы. Вот так:
Наконец, если вы хотите избежать использования CoreLocation для явного поиска текущего местоположения и хотите вместо этого использовать URL-адрес @»http://maps.google.com/maps?saddr=Current+Location&daddr=%@» , то просмотрите эту ссылку, которую я предоставил в комментариях ниже, чтобы узнать, как локализовать Current + Location строка Однако вы используете еще одну недокументированную функцию, и, как отмечает Джейсон МакКрири ниже, она может не работать надежно в будущих выпусках.
Обновление для iOS 6
Изначально Maps использовали карты Google, но теперь Apple и Google имеют отдельные приложения для карт.
1) Если вы хотите выполнить маршрутизацию с помощью приложения Google Maps, используйте схему URL-адреса comgooglemaps :
2) Чтобы использовать Apple Maps, вы можете использовать новый класс MKMapItem для iOS 6. См. Документы Apple API здесь
По сути, вы будете использовать что-то вроде этого, если направляетесь к месту назначения координаты ( latlong ):
Чтобы поддерживать iOS 6+ и pre iOS 6 в одном и том же коде, я бы порекомендовал использовать что-то вроде этого кода, который Apple имеет на странице документации API MKMapItem :
Это предполагает, что ваш Xcode Base SDK является iOS 6 (или Latest iOS).
Это работает, но только когда язык iPhone/iPod установлен на английском языке. Если вы хотите поддерживать другие языки, вам нужно будет использовать локализованную строку, соответствующую имени закладки Карты.
Это работает на iPhone:
Вы можете использовать препроцессор #define, например:
чтобы понять вашу версию iOS. Затем я также могу использовать этот код для поддержки iOS 6:
Из-за песочницы у вас нет доступа к закладкам приложения «Карта».
Вместо этого используйте Core Location, чтобы определить текущее местоположение самостоятельно. Затем используйте это местоположение (последний и длинный) в URL-адресе, который вы создаете, чтобы открыть Карты.
Я рекомендую проверить CMMapLauncher , мини-библиотеку, которую я создал для запуска Apple, Google и других приложений для сопоставления iOS с определенным запросом сопоставления. С CMMapLauncher код для получения направления в вашем вопросе будет:
Как вы можете видеть, он также инкапсулирует проверку версии, требуемую между iOS 6 и другими.
Привет, так как iOS6 вышел!
Apple сделала что-то замечательное в плохом смысле (с моей точки зрения).
Карты Apple запускаются, и для устройств под управлением iOS 6 не следует использовать maps.google.com/?q= , если вы хотите, чтобы iDevice открывал собственное приложение Plan. Теперь это будет maps.Apple.com/?q= .
Чтобы разработчикам не пришлось много работать, дружественный сервер maps.Apple.com перенаправляет все устройства, не принадлежащие Apple, на maps.google.com, поэтому изменения будут прозрачными.
Таким образом, мы, разработчики, просто должны переключить все строки запросов Google на Apple ……. Это то, что мне очень не нравится.
Я должен был реализовать эту функциональность сегодня, поэтому я сделал это. Но я чувствовал, что мне не следует просто переписывать каждый URL, лежащий на мобильном веб-сайте, на целевой сервер карт Apple, поэтому я решил просто обнаружить серверную часть iDevices и обслуживать URL-адреса Apple только для них. Я думал, что поделюсь.
Я использую PHP, поэтому я использовал библиотеку Mobile Detect с открытым исходным кодом: http://code.google.com/p/php-mobile-detect/
Просто используйте псевдо-метод isiPad в качестве логического метода получения, и все готово, вы не будете конвертировать Google в Apple 😉
Это просто требует немного кодирования.
Если вы не хотите запрашивать разрешения на местоположение и у вас нет лат и lng, используйте следующее.
Для ios5 текущее местоположение должно быть на правильном языке. Я использую LocalizedCurrentLocation из этого поста http://www.martip.net/blog/localized-current-location-string-for-iphone-apps
Для ios6 я использую CLGeocoder для получения метки, а затем открываю карту с ней и текущим местоположением.
Не забудьте добавить CoreLocation.framework и MapKit.framework
Для iOS 6 в документации Apple рекомендуется использовать эквивалентные карты. URL-схема Apple.com
так что пользуйтесь
чтобы быть обратно совместимым, код будет
для URL-схемы Apple Maps существует множество других поддерживаемых параметров: Справочник по схеме URL-адресов Apple
вы можете использовать эти макросы определения версии iOS, если у вас есть условный код в других частях вашего кода. Макросы версии iOS
Вы можете сделать это сейчас в формате html только с URL-адреса только на вашем мобильном устройстве. Вот пример . Круто то, что если вы превратите это в qr-код, у вас есть возможность, чтобы кто-то узнал, куда вы направляетесь, где бы он ни находился, просто отсканировав его на своем телефоне.
Мое предложение будет использовать OpenInGoogleMaps-iOS , поскольку это актуальный выбор (к ноябрю 2015 года), он поддерживает установку какао-бобов, и вы готовы сделать это несколькими щелчками мыши.
Установить с помощью: pod «OpenInGoogleMaps»
Требовать в заголовочном файле, используя: #import «OpenInGoogleMapsController.h»
Пример кода ниже:
В текущей версии Google Maps просто пропустите параметр sadr :
saddr :… Если значение оставить пустым, будет использоваться текущее местоположение пользователя.
Для приложения iOS6 Maps вы можете просто использовать тот же URL-адрес, указанный выше http://maps.google.com/maps?saddr=%f,%f&daddr=%@
но вместо URL-адреса карт Google вы используете URL с maps:// , в результате чего получается следующий URL: maps://saddr=%f,%f&daddr=%@.
Использование «текущего местоположения», похоже, не работает, поэтому я остался с координатами.
Еще одна хорошая вещь: он обратно совместим: на iOS5 он запускает приложение Google Maps.
Я ответил на это в другой теме. ( Текущее местоположение не работает с Apple Maps IOS 6 ). Сначала нужно получить координаты текущего местоположения, а затем использовать его для создания URL-адреса карты.
Если вы не предоставите местоположение источника, оно будет принимать текущее местоположение в качестве источника. Попробуйте ниже код
Источник
Apple URL Scheme Reference
Map Links
The maps URL scheme is used to show geographical locations and to generate driving directions between two points. If your app includes address or location information, you can use map links to open that information in the Maps app in iOS or macOS.
Unlike some schemes, map URLs do not start with a “maps” scheme identifier. Instead, map links are specified as regular http links and are opened either in Safari or the Maps app on the target platform.
Table 5-1 lists the supported parameters along with a brief description of each.