如何在苹果地图或谷歌地图中打开链接?

24

如何将网站上的链接首先指向新版Google Maps for iOS应用程序中的位置,如果不可用,则转回到Apple Maps呢?

目前,默认功能是在iOS上打开指向maps.apple.com的链接将在Apple Maps中打开,在其他设备上则打开Google Maps。

由于大多数用户似乎更喜欢使用Google Maps,在iOS设备上反转此设置会更好。


5
@Abizern,让我们不要把这变成一个争论 - 看看评论、新闻和讨论论坛。另外,毋庸置疑的是,大多数用户喜欢准确的地图数据,智能的搜索功能和可靠的路线规划(包括公共交通) - Baumr
2个回答

37

7
我明白了,所以没有一个单一的解决方案吗?如果有一个默认链接可以适用于手机地图应用程序就太好了…… - Baumr
1
如果您正在编写本机iOS应用程序,则只需进行简单的单个修复即可。您只需要测试设备是否支持“comgooglemaps://”模式...不幸的是,您无法从网站上执行此操作。 - Jason Whitehorn
9
小提示:当使用maps.apple.com时,您可能不需要检查用户代理,因为如果检测到您不在支持的设备上,它会自动重定向到Google Maps上相应的URL。 - kettlepot
Android支持geo:方案,但iOS不支持。因此,在Android设备上,您可以使用geo:lat,long?q=address来触发地图意图-允许用户使用其首选的地图应用程序打开地址。我个人不选择首选项,因为这样我就能根据需要选择Uber或Moovit或Maps :) - igorsantos07
这些信息已经过时了。https://maps.google.com 在苹果地图中打开,除非有谷歌地图可用,那么它会在谷歌地图中打开(第一次使用时会询问)。如今,苹果地图可以卸载,所以这不是一个安全的选择。我想知道的是,在iOS中如何更改这个偏好设置... - Martin Braun

0

您可以使用UIApplication实例的canOpenURL(_ url: URL) -> Bool方法,首先尝试使用Google Maps作为首选项,如果不可行,则尝试使用Apple Maps。请注意,可能也未安装Apple Maps。

Swift 5示例

// Guard your URL instances.
guard let googleMapsUrl = URL(string: "https://www.google.com/maps/@42.585444,13.007813,6z"),
      let appleMapsUrl = URL(string: "http://maps.apple.com/?q=Mexican+Restaurant") else {
          print("Error creating URLs")
          return
    }

// Check if link can be opened with Google Maps.
guard UIApplication.canOpenURL(googleMapsUrl) else {
    // Use apple maps.
    UIApplication.shared.open(appleMapsUrl, options: [:], completionHandler: nil)
    return
}

// Use google maps.
UIApplication.shared.open(googleMapsUrl, options: [:], completionHandler: nil)

注意

Google Maps文档中提供的示例代码https://developers.google.com/maps/documentation/urls/ios-urlscheme已被弃用。您应该使用以下代码:

UIApplication.shared.open("https://www.url,com", options: [:], completionHandler: nil)

参考资料: https://developer.apple.com/documentation/uikit/uiapplication/1622961-openurl


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接