如何将网站上的链接首先指向新版Google Maps for iOS应用程序中的位置,如果不可用,则转回到Apple Maps呢?
目前,默认功能是在iOS上打开指向maps.apple.com
的链接将在Apple Maps中打开,在其他设备上则打开Google Maps。
由于大多数用户似乎更喜欢使用Google Maps,在iOS设备上反转此设置会更好。
如何将网站上的链接首先指向新版Google Maps for iOS应用程序中的位置,如果不可用,则转回到Apple Maps呢?
目前,默认功能是在iOS上打开指向maps.apple.com
的链接将在Apple Maps中打开,在其他设备上则打开Google Maps。
由于大多数用户似乎更喜欢使用Google Maps,在iOS设备上反转此设置会更好。
我认为单个URL无法实现这一点。
iOS中的Google Maps使用comgooglemaps://
模式:
https://developers.google.com/maps/documentation/ios/urlscheme
而Apple Maps应用程序使用http://maps.apple.com
:
我认为你最好能够给用户提供选择,或者仅使用Apple Maps,因为你会知道它在那里(如果用户代理是iOS 6)。
geo:
方案,但iOS不支持。因此,在Android设备上,您可以使用geo:lat,long?q=address
来触发地图意图-允许用户使用其首选的地图应用程序打开地址。我个人不选择首选项,因为这样我就能根据需要选择Uber或Moovit或Maps :) - igorsantos07https://maps.google.com
在苹果地图中打开,除非有谷歌地图可用,那么它会在谷歌地图中打开(第一次使用时会询问)。如今,苹果地图可以卸载,所以这不是一个安全的选择。我想知道的是,在iOS中如何更改这个偏好设置... - Martin Braun您可以使用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