通常,当用户驾车前往地图注点 (POI) 时,他们实际上需要导航到附近的位置,例如停车场或接入点。想象一下,司机需要去机场或购物中心。前往机场时,司机试图到达航站楼或下车点,而不是机场中心区。同样,对于有车的用户来说,购物中心旁的停车场可能是更好的选择。在这种情况下,在开发为驾驶员提供引导的应用或服务时,首先要找到他们要前往的地点,然后为驾驶员提供该位置附近的可选目的地。这种做法可让您为客户提供更好的服务,并通过利用 Google Maps Platform 提供的位置数据进行小巧但智能的开发工作,证明您重视客户的时间。
简化驾驶员驾车前往某个地点时涉及的系统
![高级系统示意图](https://developers.google.cn/maps/architecture/navigate-with-car/images/system_diagram_nav_with_car.png?hl=zh-cn)
我们将向您展示如何按顺序或组合使用 Places API 和 Directions API,以便在目的地旁边确定合适的停车位置。此解决方案旨在消除不确定性和多次互动,在接近终点目的地的同时找到停车点。下面我们通过两个示例来详细介绍如何实现这两种情况。
示例 1 - 没有停车场的旅游景点
我们选择的位置与路边不直接连接,因此必须单独检索路线,目的地是巴黎的 Notre Dame,我们将使用 Gare de l’Est 火车站(48.87697775149635,2.3592247806755)作为起点。
![东站 东站](https://developers.google.cn/static/maps/architecture/navigate-with-car/images/gare_de_lest.png?hl=zh-cn)
司机在巴黎圣母院以北大约 16 分钟从车站出发。圣母院是一座著名的旅游景点,位于一座岛上,岛上有桥梁通道,有一些单行道,附近没有大型停车场,所以这应该是一个有趣的挑战。
Places API 请求
此示例 Places API 请求是使用“文本搜索”查找 Notre Dame。如需了解详情,请参阅开发者文档。这些示例中的“YOUR_KEY”是您在 Google Cloud 控制台中为启用的 Google Maps Platform Places API 和 Directions API 所具备的 API 密钥。如需了解详细说明,请参阅 Google Maps Platform 使用入门文档。
https://maps.googleapis.com/maps/api/place/textsearch/json?query=notre_dame&location=48.864716%2C2.349014®ion=fr&key=YOUR_KEY
上述请求的响应提供以下纬度和经度坐标:
"results" : [ { "formatted_address" : "Notre Dame, Paris", "geometry" : { "location" : { "lat" : 48.8527288, }, ...
如您所见,这些坐标确实精确指向了巴黎圣母院。
![]() |
![]() |
作为开发者或服务提供商,最好自动提示司机“正在查找巴黎圣母院附近的停车位?”。在这种情况下,用户体验会因设备和屏幕而异,但在这种情况下,建议考虑采用细微的弹出式文本,让文本在短时间内消失。要查找巴黎圣母院附近的停车场,请使用“parking”类型并设置半径“300”参数进行 Places API 文本搜索。此示例将调整结果偏向于巴黎圣母院 300 米以内的停车区。
https://maps.googleapis.com/maps/api/place/textsearch/json?query=parking
&location=48.8527288%2C2.3505635®ion=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
Direction API 响应通常包含多个路线建议。每条路线均由多条“路程”组成,其中一条包含多个显示行程距离和坐标的“路段”。要查找汽车可到达的最终坐标,请使用所选路线中最后一段路程的最后一步的“end_location”字段。
这个位置可能看起来不是第一选择,但当您查看地图或 Google 街景时,会发现它离巴黎圣母院只有很短的步行距离,大约 6-7 分钟。
![从停车场到巴黎圣母院的步行路线 从停车场到巴黎圣母院的步行路线](https://developers.google.cn/static/maps/architecture/navigate-with-car/images/parking_to_notredame.png?hl=zh-cn)
从停车场到巴黎圣母院的步行路线
示例 1 的摘要
如您所见,查找汽车的停车区域只需进行几次 API 调用,并向驾驶员显示建议即可。这为用户节省了时间,因为他们不会在单行道的单行道上驾车,也不会在拥挤的旅游景点找地方停下车。总的来说,我们发出了以下 API 请求:
- 查找巴黎圣母院坐标的 Places API 请求
- 查找距离这些坐标 300 米以内的停车区域的 Places API 请求
- 查找前往停车区的路线的 Directions API 请求
示例 2 - 导航到大型机场的航站楼
![希思罗机场 地图上的希思罗机场](https://developers.google.cn/static/maps/architecture/navigate-with-car/images/heathrow_map.png?hl=zh-cn)
"types" : [ "airport", "point_of_interest", "establishment" ],
但是,去过任何大型机场的人都知道,如果碰巧到达了错误的地点,要在航站楼之间换乘,将耗费大量时间。在这种情况下,由于搜索结果的类型是“机场”,因此自动跟进查询以使用伦敦希思罗机场的位置 (51.47016927594547, -0.45432767852489075) 搜索“终端”会非常有用。在该示例中,您还可以看到搜索半径的可选限制,即 3000 米。
https://maps.googleapis.com/maps/api/place/textsearch/json?query=terminal&location=51.47016927594547%2C-0.45432767852489075®ion=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 号航站楼 希思罗机场 5 号航站楼](https://developers.google.cn/static/maps/architecture/navigate-with-car/images/heathrow_terminal5_streetview.png?hl=zh-cn)
示例 2 的摘要
与上例一样,为驾驶员提供改进指导的开发工作非常小,在向驾驶员节约时间上带来的好处很容易得到衡量。我们采取了以下要求:
- 查找希思罗机场的 Places API 请求
- 查找希思罗机场坐标附近所有航站楼的 Places API 请求
- 获取前往终端 5 的路线的 Directions API 请求
总结
如您所见,为乘车的客户提供优质服务所需的开发工作相当少,而且您可以轻松展示您如何考虑客户需求。
在开发时,您可以使用许多可用的库和工具来帮助为客户构建服务。查看我们公开发布的适用于 Google Maps Platform 的 GitHub 代码库。
后续操作
主要作者
Mikko Toivanen |Google Maps Platform 解决方案工程师