Дополнительно
Как вызвать iPhone Maps for Directions с текущим местоположением в качестве начального адреса
Я знаю, что можно запустить приложение iPhone maps, вызвав openURL
на URL google maps с параметрами saddr
и daddr
со строками местоположения или Lat/Long (см. пример ниже).
Но мне интересно, возможно ли сделать так, чтобы начальный адрес был "Текущим местоположением" закладки карт, чтобы я мог использовать код обработки местоположения приложения Maps. Мой поиск в Google был довольно бесплодным.
Например:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%@&daddr=%@", myLatLong, latlong]]];
За исключением того, что нужно вызвать закладку текущего местоположения вместо myLatLong
.
72
16
До iOS 6
Для получения текущего местоположения необходимо использовать Core Location, но с помощью пары lat/long можно заставить Maps проложить маршрут от этого места до адреса улицы или местоположения. Например:
Наконец, если вы хотите избежать использования CoreLocation для явного поиска текущего местоположения и хотите вместо этого использовать
@"http://maps.google.com/maps?saddr=Current+Location&daddr=%@"
url, то см. эту ссылку, которую я дал в комментариях ниже о том, как локализовать строку Current+Location. Однако вы используете еще одну недокументированную возможность, и, как отмечает Джейсон МакКрири ниже, она может не работать надежно в будущих релизах.Обновление для iOS 6
Первоначально Карты использовали карты Google, но теперь у Apple и Google есть отдельные приложения карт.
1) Если вы хотите прокладывать маршрут с помощью приложения Google Maps, используйте схему URL comgooglemaps:
2) Чтобы использовать Apple Maps, вы можете использовать новый класс
MKMapItem
для iOS 6. См. документацию Apple API здесьВ принципе, вы будете использовать что-то вроде этого, если маршрутизация осуществляется по координатам (
latlong
):Для поддержки iOS 6+ и iOS 6 в одном коде, я бы рекомендовал использовать что-то вроде этого кода, который Apple предлагает на странице
MKMapItem
API doc:Это предполагает, что ваш Xcode Base SDK - это iOS 6 (или Latest iOS).
Это работает, но только когда iPhone или iPod язык находится на английском языке. Если вы хотите поддержать другие языки, которые вы'll должны использовать локализованную строку, чтобы соответствовать карты имя закладки.
Это работает на iPhone:
Вы можете использовать препроцессор #define как:
чтобы понять вашу версию iOS. Затем я могу использовать этот код, чтобы тоже поддерживать iOS 6,:
Из-за "песочницы" у вас нет доступа к закладкам приложения Map.
Вместо этого используйте Core Location, чтобы самостоятельно определить текущее местоположение. Затем используйте это местоположение (широту и длину) в URL, который вы создаете для открытия Карт.
Я рекомендую проверить CMMapLauncher, мини-библиотека, которую я построил для запуска Apple, Google и другие iOS-отображение приложений с конкретной просьбой сопоставления. С CMMapLauncher, код для получения направления на ваш вопрос будет:
Как вы можете видеть, он также включает проверку версии требуется между iOS 6 & другие.
Эй, так как в iOS6 вышла!
Apple сделала что-то замечательное в плохом смысле (с моей точки зрения).
Яблоко'стартовала с карты и на устройствах под управлением iOS 6 Вы не должны использовать
maps.google.com/?q=
если вы хотите, чтобы чтения компакт-дисков, чтобы открыть приложение план. Теперь это будет maps.apple.com/?q=`.Так что разработчики не'т иметь много работы, дружелюбный maps.apple.com сервер перенаправляет все не-Apple устройств к maps.google.com таким образом, изменение является прозрачной.
Таким образом, мы разработчики просто должны переключить все строки запросов Google для яблок. Это то, что я не люблю много.
Мне пришлось сегодня реализовать эту функциональность, так что я сделал это. Но я чувствовал, что я должен не просто переписать все URL-адреса, лежащего в мобильный веб-сайт целевых Яблоко's сервер карты, поэтому я думал, что я'd, просто обнаружить устройства на стороне сервера и обрабатывать URL-адреса Apple только для тех, кто. Я думал, что я'd доля.
Я'м с помощью PHP, так что я использовал открытым исходным кодом мобильной обнаружить библиотека : http://code.google.com/p/php-mobile-detect/
Просто используйте
isiPad
метод псевдо как логическое геттер и вы'повторно сделано, вы не будете конвертировать Google в Apple ;-)Ура!
Если вы Don'т хотим, чтобы попросить разрешения на месте, и Дон'Т есть лат и СПГ, используйте следующую.
Для iOS5, текущего местоположения должен быть на правильном языке. Я использую LocalizedCurrentLocation из этого поста http://www.martip.net/blog/localized-current-location-string-for-iphone-apps
Для iOS6, я использую CLGeocoder, чтобы получить метку, а затем откройте карту и текущее местоположение.
Не забудьте добавить CoreLocation.рамки и MapKit с.рамки
Для iOS6 в Apple документы рекомендуем использовать эквивалентную схему url maps.apple.com
так что используйте
вместо
на обратную совместимость кода будет
есть целая куча других поддерживаемых параметров для схемы URL-адрес Apple, карты : Ссылка схема Яблока УРЛ
вы можете использовать эти прошивкой версии макросы если у вас есть условный код в другой части вашего кода. iOS версии макросы
Настоящее решение может быть найдено здесь. Как Z5 концепции разработке для iOS код
Она просто требует немного кодирования.
Сейчас это можно сделать в html просто из url только на мобильном устройстве. Вот пример. Самое интересное, что если вы превратите это в qr-код, у вас будет возможность для кого-нибудь получить направление к вам, где бы он ни находился, просто отсканировав его на своем телефоне.
Для приложение Карты в iOS6, вы можете просто использовать ту же ссылку выложил выше
http://maps.google.com/maps?saddr=%f,%Ф&daddr=%@
но вместо Google URL-адрес карты, вы используете URL-адреса с картами://
в результате в следующий URL-адрес:
карты://saddr=%ф,%ф&daddr=%@.`Используя 'текущее местоположение' Не'т, кажется, работают, так что я остался с координатами.
Antother хорошая вещь: Она'с обратная совместимость: устройства с iOS5, он запускает приложение "Google Карты".
С текущей версией карт Google, просто не указывайте параметр
Садра
:https://developers.google.com/maps/documentation/ios/urlscheme
Мое предложение было бы использовать OpenInGoogleMaps-на iOS как это до даты (в ноябре 2015), она поддерживает установку стручки какао и вы готовы пойти в несколько кликов.
Установить использование: под "и OpenInGoogleMaps"`в
Требуют в заголовке файла через:
#импорт "и OpenInGoogleMapsController.ч"
вПример кода ниже:
Если вы Don'т предоставить информацию о местоположении источника, он будет принимать текущее местоположение в качестве источника. Попробовать ниже код-
пусть urlString = "http://maps.apple.com/maps?daddr=\(destinationLocation.latitude),\(destinationLocation.longitude)&dirflg=d" }
UIApplication.общая.openURL(url(строка: urlString)!)
Я ответил на это в другом потоке. (Текущее местоположение не'т работать с Apple Карты в iOS 6). Вам нужно получить координаты текущего местоположения, а затем использовать его, чтобы создать URL-адрес карты.