当前位置不适用于Apple Maps IOS 6

时间:2012-09-21 22:33:56

标签: url-scheme ios6-maps

在IOS 6之前,我使用此URL方案打开原生地图应用,并查找从用户当前位置到我创建的地址的路线。

  

http://maps.google.com/maps?daddr=“+地址+”& saddr =当前+位置

这很好用,但现在他们用IOS 6摆脱谷歌地图,我们必须检查他们所在的IOS版本,然后如果他们使用IOS 6.0或更高版本,则将它们引用到新的苹果地图网址方案。我们正在使用的新网址方案就是这个....

  

http://maps.apple.com/maps?daddr=“+地址+”& saddr =当前+位置

这是基于地图网址方案的新文档,可在此处找到..

无论如何,我已经测试了一堆,它归结为新的苹果地图确实识别当前位置,就像谷歌地图一样。

有谁知道我如何解决这个问题?

请记住我正在构建一个带有手机间隙的html应用,因此使用本机代码将起始地址设置为当前位置对我没有帮助。

4 个答案:

答案 0 :(得分:10)

我遇到了同样的问题。我还没有找到解决办法,但如果你放弃了悲伤

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

它只会询问他们从哪里开始,第一个选项是“当前位置”,所以当他们点击“当前位置”时,它会正确显示地图。

如果有人找到更好的解决方案,请发布,因为我仍在寻找更好的解决方案。

答案 1 :(得分:3)

您可以使用我的方法:

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

答案 2 :(得分:3)

只需将“当前位置”作为源地址传递:

http://maps.apple.com/maps?saddr=Current%20Location&daddr=Your_Address

答案 3 :(得分:2)

您可以使用由DKLocationManager创建的CLLocationManager或其包装Keith Pitt(在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]];

}