在驾车前往营业地点时打造最佳用户体验的技巧

通常,当用户驾车前往地图注点 (POI) 时,他们实际上需要导航到附近的地点,例如停车场或接入点。假设一位司机需要前往机场或购物中心。前往机场时,司机会尝试前往航站楼或下车点,而不是机场大楼的中心。同样,对于有车的用户来说,购物中心旁边的停车场可能是一个更好的选择。在这种情况下,开发用于引导司机的应用或服务时,请先找到他们要去的位置,然后为司机提供该位置附近的可选目的地。通过这种方法,您只需利用 Google Maps Platform 提供的位置数据进行少量但精明的开发工作,即可为客户提供更好的服务,并向他们表明您珍惜他们的时间。

[系统上下文] 高级导航系统
引导驾驶员前往某个位置(乘车)时所涉及系统的简化视图
系统概要图

我们将介绍如何依次或组合使用 Places API 和 Directions API 来确定在目的地附近停车的合适位置。此解决方案旨在消除不确定性,并在靠近最终目的地时,在驾车过程中通过一次互动找到停车位。下面,我们通过两个示例详细介绍了如何实现这些用例。

示例 1 - 没有停车场的旅游景点

我们选择一个与路边没有直接连接的位置,这样就必须单独检索路线。目的地是巴黎的圣母院起点巴黎东站 (48.87697775149635, 2.3592247806755564)。

Gare de l'Est

车辆会在距离巴黎圣母院约 16 分钟车程的北面离开车站。巴黎圣母院是位于桥梁相通的岛屿上的著名旅游景点,其中有一些单行道,附近没有大型停车场,因此这应该是一个有趣的挑战。

Places API 请求

此 Places API 请求示例使用“文本搜索”功能查找 Notre Dame。如需了解详情,请参阅开发者文档。这些示例中的“YOUR_KEY”是您在 Google Cloud 控制台中为已启用的 Google Maps Platform 地点和路线 API 生成的 API 密钥。如需更详细的说明,请参阅 Google Maps Platform 使用入门文档。

https://maps.googleapis.com/maps/api/place/textsearch/json?query=notre_dame&location=48.864716%2C2.349014&region=fr&key=YOUR_KEY

上述请求的响应会提供以下纬度和经度坐标:

  "results" : [
      {
        "formatted_address" : "Notre Dame, Paris",
        "geometry" : {
           "location" : {
               "lat" : 48.8527288,
                },
  ...

如您所见,这些坐标确实指向了巴黎圣母院。

巴黎圣母院照片
巴黎圣母院在地图上的位置

作为开发者或服务提供商,不妨自动提示司机“在巴黎圣母院附近寻找停车位?”。用户体验因设备和屏幕而异,但在这种情况下,不妨考虑显示一个不太明显的弹出式文字,并在短时间后让其消失。如需查找巴黎圣母院附近的停车场,请执行 Places API 文本搜索,并设置类型“停车场”和半径“300”参数。在本例中,系统会将结果偏向于巴黎圣母院 300 米范围内的停车场。

https://maps.googleapis.com/maps/api/place/textsearch/json?query=parking
&location=48.8527288%2C2.3505635&region=fr&type=parking&radius=300&key=YOUR_KEY

第一条结果是“Parking Saemes Maubert-Lagrange”,坐标为 48.850591, 2.3486436。我们将在下一部分中使用此位置,执行 Directions API 请求。

Directions API 请求

如需查找从车站到巴黎圣母院附近停车区的路线,您需要发出 Directions API 请求。只需设置起点和终点参数即可。如需了解更多选项,请参阅开发者文档

https://maps.googleapis.com/maps/api/directions/json?origin=48.8767903,2.3592251&destination=48.850591%2C2.3486436&key=YOUR_KEY

Directions API 响应通常包含多个路线建议。每条路线都由多段“路程”组成,这些路程包含多个显示行程距离和坐标的“步骤”。如需查找可驾车到达的最终坐标,请使用所选路线中最后一段的最后一步的“end_location”字段。

这个地点可能不是首选,但当您查看地图或 Google 街景时,会发现此地点距离巴黎圣母院很近,步行大约需要 6-7 分钟。

从停车场到巴黎圣母院的步行路线

从停车场到巴黎圣母院的步行路线

示例 1 的摘要

如您所见,只需进行几次 API 调用并向驾驶员显示建议,即可为汽车查找停车场所。这样可以为用户节省时间,因为他们无需在单行道上兜圈,也不必在拥挤的旅游景点中寻找停车位。总的来说,我们发出了以下 API 请求:

  • 用于查找 Notre Dame 坐标的 Places API 请求
  • 一个 Places API 请求,用于查找这些坐标 300 米范围内的停车场
  • 用于查找前往停车区的路线的 Directions API 请求

示例 2 - 引导到大型机场中的航站楼

希思罗机场在地图上的位置
我们再来看一个例子,假设司机正尝试前往一个包含多个地点、地图注点或潜在下车点的大区域。司机将从英国温布利球场 (51.557263604707224, -0.2794575145680608) 出发,前往伦敦希思罗机场 5 号航站楼。通常,用户会开始输入“Heathrow”,并且大多数情况下,如果前 2 条或 3 条结果看起来是正确的,用户会选择其中一条。从所选结果中,您可以通过读取“types”字段值来了解相应地点是机场。您可以点击此处查看完整的类型列表。

  "types" : [ "airport", "point_of_interest", "establishment" ],

不过,任何去过大型机场的人都知道,如果您不小心到达了错误的目的地,在航站楼之间转移需要花费大量时间。在本例中,由于搜索结果的类型为“机场”,因此自动跟进查询以使用伦敦希思罗机场的位置 (51.47016927594547, -0.45432767852489075) 搜索“航站楼”会很有用。在此示例中,您还可以看到可选的搜索半径限制为 3,000 米。

  https://maps.googleapis.com/maps/api/place/textsearch/json?query=terminal&location=51.47016927594547%2C-0.45432767852489075&region=gb&key=YOUR_KEY&radius=3000

上述查询会返回相应航站楼及其各个下车点的列表。在结果列表中,我们可以找到“伦敦希思罗机场 5 号航站楼”及其地点 ID:

 "place_id" : "ChIJtQRd6XVxdkgRTUGZtcsoGNc",

使用“place_id”参数,我们可以告知 Directions API 我们要前往某个地点,而不是某个任意坐标。

  https://maps.googleapis.com/maps/api/directions/json?origin=51.557263604707224,-0.2794575145680608&destination=place_id:ChIJtQRd6XVxdkgRTUGZtcsoGNc&key=YOUR_KEY

同样,与上例一样,通过读取 JSON 响应中的所有步骤,您会找到行程的最后一部分以及终点位置的经纬度坐标 (51.47079979999999,-0.4896765)。

希思罗机场 5 号航站楼

示例 2 的摘要

与前面的示例一样,为驾驶员提供更完善的指导所需的开发工作量非常小,而且驾驶员节省的时间优势很容易衡量。我们执行了以下请求:

  • 用于查找希思罗机场的 Places API 请求
  • 用于查找靠近希思罗机场坐标的所有航站楼的 Places API 请求
  • 用于获取前往 5 号航站楼的路线的 Directions API 请求

总结

如您所见,为乘车客户提供优质服务所需的开发工作量非常小,这让您可以轻松展示自己是如何考虑客户需求的。

出于开发目的,您可以使用许多可用的库和工具来帮助您为客户构建服务。请查看我们公开提供的 Google 地图平台 GitHub 代码库

后续操作

主要作者

Mikko Toivanen | Google Maps Platform 解决方案工程师