【问题标题】:Phonegap - Open Navigation Directions in Apple Maps AppPhonegap - 在 Apple 地图应用中打开导航方向
【发布时间】:2013-01-08 08:08:38
【问题描述】:

我有两个变量 - Destination 和 Source - 并且,使用 Phonegap,我正在尝试使用 jQuery 打开带有方向的外部 iPhone Apple Maps 应用程序。

我使用的代码如下所示:

var url = 'http://maps.apple.com/?q=daddr='+destination+'&saddr='+source;
window.location = url;

但是,每当我点击相关按钮时,它都会在应用内打开一个新视图,其中包含 Google 方向作为 web 视图,并且我无法返回原始应用。

如何使用 iOS 默认地图应用程序打开链接?

【问题讨论】:

  • 我看到了,但不幸的是我在 HTML 和 Javascript 中使用 Phonegap 进行编码,所以 Objective-C 不是我用来编译的语言 - 但我找到了我需要的解决方案,谢谢为您的帮助!
  • @BenPearlKahan 我有同样的问题,你能告诉我你的解决方案吗?谢谢

标签: javascript jquery ios cordova maps


【解决方案1】:

代码

我设法在 2018 年使用 iOS 中的以下格式在 iOS 11.2 上实现了此功能:

<a onclick="window.open('maps://?q=51.178847,-1.826160', '_system');">Open in Maps</a>

Android 上的这种格式:

<a onclick="window.open('geo:0,0?q=51.178847,-1.826160', '_system');">Open in Maps</a>

配置权限

此外,不要忘记为您的config.xml 文件添加权限,如下所示:

<allow-intent href="maps:*" />

在我的项目中,geo: 的意图从一开始就存在,所以我花了一段时间才弄清楚为什么它适用于 Android 而不是 iOS。

【讨论】:

  • 在 iOS 12.3 Cordova 9 中不工作,请提供任何想法!!
  • 在 iOS 12.4 Cordova 6.1.1 和 Android 30 Cordova 8.0 上像魅力一样工作
【解决方案2】:

今天,我能够使用以下两种 URL 方案从 Cordova 应用程序中打开带有标记的原生 Apple 地图应用程序:

maps://maps.apple.com/?q={latitude},{longitude}

maps://?q={latitude},{longitude}

在链接中:

<a href="maps://maps.apple.com?q={latitude},{longitude}">
<!-- OR -->
<a href="maps://?q={latitude},{longitude}">

来自 JavaScript:

window.location.href = "maps://maps.apple.com/?q="+lat+","+lng;
// OR
window.location.href = "maps://?q="+lat+","+lng;

应用在 iOS 设备上运行,iOS 版本 8.1.2,cordova-ios 版本为 3.7.0。

【讨论】:

  • 在 iOS 12.3 Cordova 9 中不工作,请提供任何想法!!
【解决方案3】:

就我而言,从http://maps.apple.com/?q= 更改为仅maps:?q= 并不能解决问题。

用marker打开原生Apple Maps的工作方案如下:

maps://maps.apple.com/?q={latitude},{longitude}

完整的工作代码:

window.location.href = "maps://maps.apple.com/?q="+lat+","+lng;

已测试与 iOS7.1 模拟器一起使用,可能无法在以后的版本中使用。我没有机会测试。对不起。

可在此处找到支持的 Apple 地图参数: https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html

归功于此 SO 链接:Here

【讨论】:

    【解决方案4】:

    http://maps.apple.com/?q= 更改为 maps: 就可以了。


    注意:请确保您写的是 maps: 而不是 map:,因为后者会运行正确的应用程序,但在打开后会立即崩溃(感谢 jprofitt)

    【讨论】:

    • 啊哈!我想知道是否有类似的东西(特定的协议处理程序)但没有找到任何文档 - 没想到只是尝试!感谢您发布。
    • 很高兴 - 弄清楚这一点是一种解脱!
    • 有趣的是,这与 Apple 的文档直接矛盾:developer.apple.com/library/ios/#featuredarticles/… 但这个答案是有效的!
    • 对于那些想弄清楚这一点的人来说,请注意:在 iOS 7 上,如果您使用 map: 而不是 maps:,它实际上会启动地图应用程序,但会立即崩溃。检查你的拼写。 (Ben,如果您愿意,请随时将此添加到您的答案中)
    • @BenPearlKahan 这行得通,但是我怎样才能通过纬度和经度而不是名称?我正在使用maps.apple.com/maps?ll=51.83733,-8.3016
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2019-12-25
    • 2018-12-06
    • 1970-01-01
    • 2015-04-12
    相关资源
    最近更新 更多