在搭载 iOS 9 及更高版本的设备上,如果您有 Google 地图网址,可以使用 通用链接启动 Google 地图。
您可以使用 Google 地图网址协议启动 Google 地图 iOS 应用 并执行搜索、获取路线 请求和显示地图视图。启动 Google 地图时,系统会自动将您的软件包标识符作为请求的一部分发送。
您无需 Google API 密钥即可使用 Google 地图网址协议。
通用链接和 Google 地图
Google 地图 iOS 版支持 通用 链接在搭载 iOS 9 或更高版本的设备上使用。
如果您的网址与以下正则表达式匹配,并且设备搭载的是 iOS 9 或更高版本,您不妨考虑直接使用 open网址: 方法。
(http(s?)://)?
((maps\.google\.{TLD}/)|
((www\.)?google\.{TLD}/maps/)|
(goo.gl/maps/))
.*
例如,
Swift
UIApplication.shared.openURL(URL(string:"https://www.google.com/maps/@42.585444,13.007813,6z")!)
Objective-C
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"https://www.google.com/maps/@42.585444,13.007813,6z"]];
概览
借助网址协议,您可以从另一个 iOS 应用或 Web 应用启动 iOS 应用。您可以在网址中设置传递给启动的应用的选项。Google 地图 iOS 应用支持以下网址架构:
comgooglemaps://- 借助此架构,您可以启动 Google 地图 iOS 应用 并执行以下操作之一:- 在指定位置以指定的缩放级别显示地图。
- 搜索地点或位置,然后在地图上显示出来。
- 请求从一个地点到另一个地点的路线。系统可以返回四种交通方式的路线:驾车、步行、骑车和公共交通。
- 向应用添加导航功能。
comgooglemapsurl://- 借助此架构,您可以使用从桌面版 Google 地图网站派生的网址启动 Google 地图 iOS 应用 。这意味着,您可以为用户提供移动体验,而不是加载 Google 地图网站。- 原始网址可以是
maps.google.com或google.com/maps, 也可以使用任何有效的顶级国家/地区域名(而不是com)。 您还可以传递goo.gl/maps重定向网址。
- 原始网址可以是
启动 Google 地图 iOS 应用并执行特定功能
如需启动 Google 地图 iOS 应用,并选择性地执行其中一个受支持的功能,请使用以下形式的网址协议:
comgooglemaps://?parameters
本文档中稍后将详细描述相关参数。
检查设备上 Google 地图应用的可用性
在应用中向用户显示其中一个网址之前,您应先验证该应用是否已安装。您的应用可以使用以下代码检查网址架构是否可用:
Swift
UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)
Objective-C
[[UIApplication sharedApplication] canOpenURL:
[NSURL URLWithString:@"comgooglemaps://"]];
例如,如需显示纽约中央公园的地图,您可以使用以下代码:
Swift
if (UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)) {
UIApplication.shared.openURL(URL(string:
"comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic")!)
} else {
print("Can't use comgooglemaps://");
}
Objective-C
if ([[UIApplication sharedApplication] canOpenURL:
[NSURL URLWithString:@"comgooglemaps://"]]) {
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic"]];
} else {
NSLog(@"Can't use comgooglemaps://");
}
显示地图
使用网址协议以指定的缩放级别和位置显示地图。您也可以在地图上叠加其他视图,或显示街景图像。
参数
下面所有的参数都是可选的。如果未设置任何参数,网址协议将启动 Google 地图 iOS 应用。
center:这是地图视口的中心点。格式为以英文逗号分隔的latitude,longitude字符串。mapmode:设置显示的地图类型。可以设置为:standard或streetview。如果未指定,系统将使用当前应用设置。views:开启/关闭特定视图。可以设置为:satellite、traffic或transit。可以使用英文逗号分隔符设置多个值。如果指定了该参数但未指定值,则系统将清除所有视图。zoom:指定地图的缩放级别。
以下示例网址显示的是以纽约为中心、缩放级别为 14 且开启了路况视图的地图:
comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic

以下是一些其他示例:
comgooglemaps://?center=37.788463,-122.392545&zoom=12
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
搜索
使用此网址协议可以在指定的视口位置显示搜索查询。
参数
除了用于显示地图的参数之外,搜索还支持 q 参数。
q:搜索的查询字符串。
以下示例网址用于在指定位置附近搜索“Pizza”:
comgooglemaps://?q=Pizza¢er=37.759748,-122.427135

以下是一些其他示例:
comgooglemaps://?q=Steamers+Lane+Santa+Cruz,+CA¢er=37.782652,-122.410126&views=satellite,traffic&zoom=15
comgooglemaps://?q=Google+Japan,+Minato,+Tokyo,+Japan¢er=35.660888,139.73073&zoom=15&views=transit
显示路线
使用此架构请求并显示两个位置之间的路线。 您还可以指定交通方式。
参数
saddr:设置路线搜索的出发地。可以是纬度、经度,也可以是格式化为查询的地址。如果查询字符串返回多个结果,系统将选择第一个结果。如果该值留空,系统将使用用户的当前位置。daddr:设置路线搜索的终点。格式和行为与saddr相同。directionsmode:交通方式。可以设置为:driving、transit、bicycling或walking。
以下示例网址显示的是 Google NYC 和 JFK 机场之间的公共交通路线:
comgooglemaps://?saddr=Google+Inc,+8th+Avenue,+New+York,+NY&daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York&directionsmode=transit

以下是一些其他示例:
comgooglemaps://?saddr=Google,+1600+Amphitheatre+Parkway,+Mountain+View,+CA+94043&daddr=Google+Inc,+345+Spear+Street,+San+Francisco,+CA¢er=37.422185,-122.083898&zoom=10
comgooglemaps://?saddr=2025+Garcia+Ave,+Mountain+View,+CA,+USA&daddr=Google,+1600+Amphitheatre+Parkway,+Mountain+View,+CA,+United+States¢er=37.423725,-122.0877&directionsmode=walking&zoom=17
向应用添加导航功能
通过路线请求启动 Google 地图 iOS 应用,让用户可以从您的应用获取精细导航。您可以使用 comgooglemaps:// 网址协议。
从 Google 地图桌面版网址启动 Google 地图 iOS 应用
如果您的应用可以访问预先存在的 Google 地图网址(例如网页上或数据库中),您可以使用此架构在 Google 地图 iOS 应用中打开该网址,从而为用户提供最佳移动体验。
- 将
http://或https://架构替换为comgooglemapsurl://。
支持的 Google 地图网址格式
comgooglemapsurl:// 架构支持与此正则表达式匹配的网址,其中 {TLD} 是指任何有效的顶级国家/地区域名。为了清晰起见,我们添加了换行符:
(http(s?)://)?
((maps\.google\.{TLD}/)|
((www\.)?google\.{TLD}/maps/)|
(goo.gl/maps/))
.*
检查 Google 地图应用的可用性
首先验证 Google 地图 iOS 应用在设备上是否可用,以及是否支持网址协议:
Swift
UIApplication.shared.canOpenURL(URL(string:"comgooglemapsurl://")!)
Objective-C
[[UIApplication sharedApplication] canOpenURL:
[NSURL URLWithString:@"comgooglemapsurl://"]];
示例
通用 Google 地图网址示例:
原来的 Google 地图网址:
https://www.google.com/maps/preview/@42.585444,13.007813,6z
使用网址协议:
comgooglemapsurl://www.google.com/maps/preview/@42.585444,13.007813,6z
通用 Google 地图网址示例:
原来的 Google 地图网址:
https://maps.google.com/?q=@37.3161,-122.1836
使用网址协议:
comgooglemapsurl://maps.google.com/?q=@37.3161,-122.1836