Текущее местоположение не работает с Apple Maps IOS 6
До IOS 6 я использовал эту схему URL, чтобы открыть приложение родных карт и найти направления от текущего местоположения пользователей к адресу, который я создал.
http://maps.google.com/maps?daddr= "+ адрес +" & saddr = Current + Location
Это отлично работает, но теперь, когда они избавились от карт google с IOS 6, нам пришлось проверить, в какую версию IOS они были включены, а затем ссылаться на новую схему URL-адресов карт Apple, если они используют IOS 6.0 или выше. Новая схема URL, которую мы используем, - это...
http://maps.apple.com/maps?daddr= "+ address +" & saddr = Current + Location
Это основано на новой документации для схем URL-адресов карты, которые можно найти здесь.
В любом случае, я протестировал его на кучу, и это сводится к новым картам Apple, которые распознают текущее местоположение, например, карты google.
Кто-нибудь знает, как я это исправить?
Имейте в виду, что я создаю приложение html с разрывом в телефоне, поэтому использование собственного кода для установки начального адреса в текущее местоположение не поможет мне.
Ответы
Ответ 1
У меня такая же проблема. Я еще не нашел решение, но если вы оставите садир
http://maps.apple.com/maps?daddr=" + address
он просто спросит их, с чего начать, а первый вариант - "Текущее местоположение", поэтому, когда они нажмут "Текущее местоположение", он отобразит карту правильно.
Если кто-то найдет лучшее решение, отправьте его, поскольку я все еще ищу лучшее решение.
Ответ 2
Вы можете использовать мой метод:
<script type="text/javascript">
var link = "maps:saddr=YPlat,YPlong&daddr=42.118599,-72.625122";
navigator.geolocation.getCurrentPosition(showPosition);
function showPosition(position)
{
link = link.replace("YPlat",position.coords.latitude);
link = link.replace("YPlong",position.coords.longitude);
window.location = link;
}
</script>
подтвержденный iOS 5.1 и iOS 6
Ответ 3
Просто передайте "Текущее местоположение" в качестве исходного адреса:
http://maps.apple.com/maps?saddr=Current%20Location&daddr=Your_Address
Ответ 4
Вы можете получить координаты текущего местоположения с помощью CLLocationManager или его оболочки DKLocationManager (на github), созданной Кит Питт.
Как только у вас есть координаты, вы можете использовать следующий пример кода.
+ (void) openDirectionFrom:CLLocation* currentLocation To:(NSString*) daddr {
NSString* urlStr;
NSString* saddr = @"Current+Location";
if ([[UIDevice currentDevice] systemVersion] floatValue] >=6) {
//iOS 6+, Should use map.apple.com. Current Location doesn't work in iOS 6 . Must provide the coordinate.
if ((currentLocation.coordinate.latitude != kCLLocationCoordinate2DInvalid.latitude) && (currentLocation.coordinate.longitude != kCLLocationCoordinate2DInvalid.longitude)) {
//Valid location.
saddr = [NSString stringWithFormat:@"%f,%f", currentLocation.coordinate.latitude,currentLocation.coordinate.longitude];
urlStr = [NSString stringWithFormat:@"http://maps.apple.com/maps?saddr=%@&daddr=%@", saddr, daddr];
} else {
//Invalid location. Location Service disabled.
urlStr = [NSString stringWithFormat:@"http://maps.apple.com/maps?daddr=%@", daddr];
}
} else {
// < iOS 6. Use maps.google.com
urlStr = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%@&daddr=%@", saddr, daddr];
}
[(UIApplicationWithEvents*)[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
}