在运行 iOS 9 及更高版本的设备上,您可以使用 用于启动 Google 的通用链接 Google 地图(如果您有 Google 地图网址)。
您可以使用 Google 地图网址协议启动 iOS 版 Google 地图应用,执行搜索和获取路线 请求,以及显示地图视图。启动 Google 地图后,您的套装 作为请求的一部分自动发送。
您无需 Google API 密钥即可使用 Google 地图网址架构。
通用链接和 Google 地图
iOS 版 Google 地图支持 通用 链接。
如果您的网址与以下正则表达式匹配,并且设备正在运行 对于 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 应用启动原生 iOS 应用 或 Web 应用您可以在要传递给 启动应用。iOS 版 Google 地图应用支持以下网址 架构:
comgooglemaps://
和comgooglemaps-x-callback://
- 这些架构 启动 iOS 版 Google 地图应用,并执行 操作:- 在指定位置以指定的缩放级别显示地图。
- 搜索地点或位置,然后在地图上显示出来。
- 请求从一个地点到另一个地点的路线。可返回路线 提供四种交通方式:驾车、步行、骑车和公共 。
- 向应用添加导航。
- 通过 iOS 8,在应用完成后使用
comgooglemaps-x-callback://
。回调通常用于 将用户返回到最初打开 iOS 版 Google 地图的应用。请注意, 在 iOS 9 上,系统会自动提供“返回”按钮,链接 。
comgooglemapsurl://
- 此架构可让您启动 Google 地图应用 (针对 iOS),使用从桌面版 Google 地图网站中派生的网址。这意味着 您可以为用户提供原生移动体验,而不是简单地 加载 Google 地图网站。- 原始网址可以是
maps.google.com
或google.com/maps
的网址, 或使用任何有效的顶级国家/地区域名,而不是com
。 您还可以传递goo.gl/maps
重定向网址。 - 您可以使用
x-source
和x-success
发出回调 包含comgooglemapsurl://
网址架构的参数。
- 原始网址可以是
启动 iOS 版 Google 地图应用并执行特定功能
要启动 iOS 版 Google 地图应用并选择执行下列操作之一,请按以下步骤操作: 支持的函数,请使用以下格式的网址架构:
comgooglemaps://?parameters
或者:
comgooglemaps-x-callback://?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://");
}
显示地图
使用网址架构以指定缩放级别和位置显示地图。 您也可以在地图上叠加其他视图,或显示街景图像。
参数
以下所有参数均为可选参数。如果未设置任何参数, 网址方案将启动 iOS 版 Google 地图应用。
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
搜索
使用此网址协议可以在指定的视口位置显示搜索查询。
参数
除了用于显示地图的参数外,Google 搜索还支持 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 纽约办事处和肯尼迪国际机场之间的公交路线:
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
指定回调网址
如果您想指定一个回调网址,必须使用
comgooglemaps-x-callback://
网址架构。该机制遵循
x-callback-url 规范。当您调用 iOS 版 Google 地图应用时
采用此方案时,应用会在顶部显示一个按钮
屏幕上。点按此按钮会发出对以下网址的回调:
对 comgooglemaps-x-callback://
的请求必须采用以下格式:
comgooglemaps-x-callback://?parameters
参数
x-callback 网址架构接受与 comgooglemaps://
相同的参数
网址协议,包含以下其他参数。这两个参数
必填字段。
x-source
- 发送 x-回调的应用的名称 请求。最好使用短名称。x-success
- 完成后调用的网址。通常情况下 是您自己的应用的网址架构,可让用户返回到原始应用 应用。
请注意,您的应用必须注册自己的网址架构, 对回调网址作出响应。
- 确保您的应用已注册了可以响应的网址架构 。
- 在
x-source
参数中传递回调按钮的标签。 - 在
x-success
参数中传递回调网址。
以下示例将启动 iOS 版 Google 地图应用,并显示地图
以纽约为中心该应用还会显示标有“SourceApp”的按钮。
当“SourceApp”按钮后,iOS 版 Google 地图应用就会发出
对虚构网址架构 sourceapp://?resume=true
的回调。
comgooglemaps-x-callback://?center=40.765819,-73.975866&zoom=14
&x-success=sourceapp://?resume=true
&x-source=SourceApp
与 comgooglemaps://
网址架构一样,您应该先验证
iOS 版 Google 地图应用可在设备上使用,并且支持
x-callback 网址架构。您的应用可以检查网址架构是否可用
替换为以下代码:
Swift
UIApplication.shared.canOpenURL(URL(string:"comgooglemaps-x-callback://")!)
Objective-C
[[UIApplication sharedApplication] canOpenURL:
[NSURL URLWithString:@"comgooglemaps-x-callback://"]];
这是一个网址示例,可让用户在搜索 dessert。
comgooglemaps-x-callback://?q=dessert¢er=37.759748,-122.427135
&x-success=sourceapp://?resume=true
&x-source=Nom+Nom
向应用添加导航
通过路线请求启动 iOS 版 Google 地图应用可轻松
让用户能够通过您的应用使用精细导航功能。您可以使用
comgooglemaps://
或 comgooglemaps-x-callback://
网址架构。
以下代码段展示了如何使用 comgooglemaps-x-callback://
架构来
请求路线,然后在用户准备就绪后返回您的应用。通过
代码将执行以下操作:
- 验证
comgooglemaps-x-callback://
网址架构是否可用。 - 启动 iOS 版 Google 地图应用,并查询前往肯尼迪国际机场 纽约市。将出发地址留空可请求从 用户的当前位置。
- 添加一个标记为“AirApp”的按钮到 iOS 版 Google 地图应用。按钮
标签由
x-source
参数定义。 - 当用户点击
sourceapp://
返回按钮。
Swift
let testURL = URL(string: "comgooglemaps-x-callback://")!
if UIApplication.shared.canOpenURL(testURL) {
let directionsRequest = "comgooglemaps-x-callback://" +
"?daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York" +
"&x-success=sourceapp://?resume=true&x-source=AirApp"
let directionsURL = URL(string: directionsRequest)!
UIApplication.shared.openURL(directionsURL)
} else {
NSLog("Can't use comgooglemaps-x-callback:// on this device.")
}
Objective-C
NSURL *testURL = [NSURL URLWithString:@"comgooglemaps-x-callback://"];
if ([[UIApplication sharedApplication] canOpenURL:testURL]) {
NSString *directionsRequest = @"comgooglemaps-x-callback://" +
@"?daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York" +
@"&x-success=sourceapp://?resume=true&x-source=AirApp";
NSURL *directionsURL = [NSURL URLWithString:directionsRequest];
[[UIApplication sharedApplication] openURL:directionsURL];
} else {
NSLog(@"Can't use comgooglemaps-x-callback:// on this device.");
}
从 Google 地图桌面版网址启动 iOS 版 Google 地图应用
如果您的应用可以访问预先存在的 Google 地图网址(例如网页中的网址) 或者在数据库中,您可以使用此架构在 Google 地图应用中打开网址 ,从而为您的用户提供最佳原生体验。
- 将
http://
或https://
架构替换为comgooglemapsurl://
。 - 如果您想使用回调,请添加
x-source
和x-success
参数。此架构遵循 x-callback-url 规范。
支持的 Google 地图网址格式
comgooglemapsurl://
架构支持符合此常规规则的网址
表达式,其中 {TLD}
是指任何有效的顶级国家/地区域名。折线图
为清晰起见,添加了换行符:
(http(s?)://)?
((maps\.google\.{TLD}/)|
((www\.)?google\.{TLD}/maps/)|
(goo.gl/maps/))
.*
检查 Google 地图应用的可用性
首先验证是否可以在设备上使用 iOS 版 Google 地图应用;然后 支持网址架构:
Swift
UIApplication.shared.canOpenURL(URL(string:"comgooglemaps-x-callback://")!)
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/[email protected],-122.1836
使用网址架构:
comgooglemapsurl://maps.google.com/[email protected],-122.1836
通过 x-callback 请求前往东京铁塔的路线示例:
原来的 Google 地图网址:
http://maps.google.com/maps?f=d&daddr=Tokyo+Tower,+Tokyo,+Japan&sll=35.6586,139.7454&sspn=0.2,0.1&nav=1
以下示例将启动 iOS 版 Google 地图应用,并显示地图
包含前往东京铁塔的路线,如原始 Google 地图网址中所述
(如上文所述)。该应用还会显示标有
“SourceApp”。当“SourceApp”按钮时,iOS 版 Google 地图应用
将发出对虚拟网址架构 sourceapp://?resume=true
的回调。
comgooglemapsurl://maps.google.com/maps?f=d&daddr=Tokyo+Tower,+Tokyo,+Japan&sll=35.6586,139.7454&sspn=0.2,0.1&nav=1
&x-source=SourceApp
&x-success=sourceapp://?resume=true