Current Location doesn't work with Apple Maps IOS 6

前端 未结 4 1839
太阳男子
太阳男子 2020-12-17 16:50

Before IOS 6, I was using this URL scheme to open the native maps app and find directions from the users current location to an address that I created.

<
相关标签:
4条回答
  • 2020-12-17 17:21

    Just pass "Current Location" as the source address:

    http://maps.apple.com/maps?saddr=Current%20Location&daddr=Your_Address
    
    0 讨论(0)
  • 2020-12-17 17:40

    You can get the coordinates of the current location using CLLocationManager, or its wrapper DKLocationManager (on github), created by Keith Pitt.

    Once you have the coordinates, you can use the following code sample.

    + (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]];
    
    }
    
    0 讨论(0)
  • 2020-12-17 17:46

    I am having the same problem. I haven't found a solution yet but if you leave off the saddr

    http://maps.apple.com/maps?daddr=" + address
    

    it will just ask them where to start and the first option is "Current Location" so when they click "Current Location" it will show the map correctly.

    If anyone finds a better solution please post it as I am still looking for a better solution.

    0 讨论(0)
  • 2020-12-17 17:46

    You can use my method:

        <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>
    

    confirmed with iOS 5.1 and iOS 6

    0 讨论(0)
提交回复
热议问题