【问题标题】:Current Location doesn't work with Apple Maps IOS 6当前位置不适用于 Apple Maps IOS 6
【发布时间】:2012-09-14 09:02:34
【问题描述】:

在 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 应用程序,因此使用本机代码将起始地址设置为当前位置对我没有帮助。

【问题讨论】:

  • 您忘记将网址放置到文档中。
  • 很抱歉这么晚才回复你这里是文档的链接,虽然它没有多大帮助。 developer.apple.com/library/ios/#featuredarticles/…
  • 使用 %20 代替 +(加号)符号。加号不是在 url 中添加空格的正确方法。然而,一些搜索引擎和表单提交使用加号代替空格,但正确的方法是 %20。我已在 iPad 上验证,当文本为 &saddr=Current%20Location 时,上述 URL 确实打开了导航

标签: url-scheme ios6-maps


【解决方案1】:

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

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

【讨论】:

  • 这必须是某种形式的 UIWebView 还是什么?我确实看到了如何在 UIWebView 中使用它,但它仍然需要请求使用 GPS 的权限。
【解决方案3】:

您可以使用 CLLocationManager 或其包装器 DKLocationManager(在 github 上)获取当前位置的坐标,由 Keith Pitt 创建。

获得坐标后,您可以使用以下代码示例。

+ (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]];

}

【讨论】:

  • 你确定这行得通吗?我认为“当前+位置”中有错字
  • @ruralcoder 感谢您的关注。在stackoverflow上编辑代码时出现错字。请让我知道什么不起作用。
【解决方案4】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 2014-01-24
    • 1970-01-01
    • 2018-12-14
    相关资源
    最近更新 更多