iOS 版 Google 地图网址方案

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

在搭载 iOS 9 及更高版本的设备上,如果您有 Google 地图网址,则可以使用通用链接启动 Google 地图。

您可以使用 Google 地图网址架构启动 iOS 版 Google 地图应用,并执行搜索、获取路线请求和显示地图视图。在您启动 Google 地图时,软件包标识符会自动随请求一起发送。

无需 Google API 密钥即可使用 Google 地图网址架构。

iOS 版 Google 地图支持在搭载 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 应用。您可以在网址中设置要传递给已启动的应用的选项。iOS 版 Google 地图应用支持以下网址方案:

  • comgooglemaps://comgooglemaps-x-callback:// - 这些架构允许您启动 iOS 版 Google 地图应用,并执行以下任一操作:

    • 在指定位置以指定的缩放级别显示地图。
    • 搜索地点或位置,然后在地图上显示出来。
    • 请求从一个地点到另一个地点的路线。系统会返回以下四种交通方式的路线:驾车、步行、骑车和公共交通。
    • 为您的应用添加导航。
    • 在 iOS 8 中,当应用完成后,使用 comgooglemaps-x-callback:// 发出回调。回调通常用于使用户返回到最初打开 iOS 版 Google 地图的应用。请注意,在 iOS 9 中,系统会自动在状态栏的左角提供“返回”链接。
  • comgooglemapsurl:// - 此架构可让您使用衍生自桌面版 Google 地图网站的网址来启动 iOS 版 Google 地图应用。这意味着您可以为用户提供原生移动体验,而不是简单地加载 Google 地图网站。

    • 原始网址可以是 maps.google.comgoogle.com/maps 或任何有效的顶级域名国家/地区(而非 com)。您还可以传递 goo.gl/maps 个重定向网址。
    • 您可以使用 x-sourcex-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:设置显示的地图类型。可以设置为:standardstreetview。如果未指定,则将使用当前的应用设置。
  • views:开启/关闭特定视图。可以设置为:satellitetraffictransit。您可以使用英文逗号分隔来设置多个值。如果指定了该参数但未指定值,则它会清除所有视图。
  • 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:搜索的查询字符串。

以下示例网址用于搜索指定地点附近的“披萨”:

comgooglemaps://?q=Pizza&center=37.759748,-122.427135

附近的比萨店

以下是一些其他示例:

comgooglemaps://?q=Steamers+Lane+Santa+Cruz,+CA&center=37.782652,-122.410126&views=satellite,traffic&zoom=15
comgooglemaps://?q=Google+Japan,+Minato,+Tokyo,+Japan&center=35.660888,139.73073&zoom=15&views=transit

显示路线

使用此架构来请求并显示两个位置之间的路线。 您还可以指定交通方式。

参数

  • saddr:设置路线搜索的起点。这可以是纬度、经度或查询格式的地址。如果它是返回多个结果的查询字符串,则会选择第一个结果。如果将该值留空,系统会使用用户的当前位置。
  • daddr:设置路线搜索的终点。格式和行为与 saddr 相同。
  • directionsmode:交通方式。可以设置为:drivingtransitbicyclingwalking

此示例网址显示了 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&center=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&center=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-callback 请求的应用的名称。最好使用短名称。
  • x-success - 完成时要调用的网址。通常,这是您自己的应用的网址方案,可以让用户返回原始应用。

请注意,您的应用必须注册自己的网址架构,以便能够响应回调网址。

  1. 确保您的应用已注册了可响应回调请求的网址架构。
  2. x-source 参数中传递回调按钮的标签。
  3. 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 回调网址架构。您的应用可以通过以下代码检查网址架构是否可用:

Swift

UIApplication.shared.canOpenURL(URL(string:"comgooglemaps-x-callback://")!)

Objective-C

[[UIApplication sharedApplication] canOpenURL:
   [NSURL URLWithString:@"comgooglemaps-x-callback://"]];

这是一个网址示例,可让用户在搜索甜点后返回到应用。

comgooglemaps-x-callback://?q=dessert&center=37.759748,-122.427135
   &x-success=sourceapp://?resume=true
   &x-source=Nom+Nom

向应用添加导航

通过路线请求启动 iOS 版 Google 地图应用是让用户从您的应用访问精细导航的一种简单方式。您可以使用 comgooglemaps://comgooglemaps-x-callback:// 网址架构。

以下代码段展示了如何使用 comgooglemaps-x-callback:// 架构来请求路线,然后在用户准备就绪后返回到您的应用。该代码将执行以下操作:

  1. 验证 comgooglemaps-x-callback:// 网址架构是否可用。
  2. 启动 iOS 版 Google 地图应用,并查询前往纽约市肯尼迪机场的路线。将起始地址留空即可请求从用户的当前位置出发的路线。
  3. 向 iOS 版 Google 地图应用添加标有“AirApp”的按钮。按钮标签由 x-source 参数定义。
  4. 在用户点击返回按钮时,调用虚构的网址方案 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 地图网址(例如在网页上或数据库中),您可以使用此架构在 iOS 版 Google 地图应用中打开网址,从而向用户提供最佳的原生体验。

  1. http://https:// 架构替换为 comgooglemapsurl://
  2. 如果您要使用回调,请添加 x-sourcex-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/?q=@37.3161,-122.1836

使用网址架构:

comgooglemapsurl://maps.google.com/?q=@37.3161,-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