13

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

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

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

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

这是基于地图 url 方案的新文档,可在此处找到。

无论如何,我已经对其进行了很多测试,归结为新的苹果地图确实可以识别当前位置,就像谷歌地图一样。

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

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

4

4 回答 4

10

我有同样的问题。我还没有找到解决方案,但如果你离开了saddr

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

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

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

于 2012-09-22T23:31:16.340 回答
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 确认

于 2012-12-07T20:20:49.620 回答
3

只需通过“当前位置”作为源地址:

http://maps.apple.com/maps?saddr=Current%20Location&daddr=Your_Address
于 2015-01-21T01:00:06.403 回答
2

您可以使用由Keith Pitt创建的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]];

}
于 2013-01-11T05:30:24.847 回答