Текущее местоположение не работает с 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]];

}