Android 版 Navigation SDK 提供了增强型方式来指定途经点,从而提供更准确的路线规划和更好的到达体验,尤其是在目的地有多个入口或特定导航点的情况下。您可以使用 navigationPointToken 路由到精确位置,也可以将经纬度坐标与地点 ID 结合使用,以添加更多背景信息。如果适用,系统将继续执行目的地突出显示功能。
背景
在 v7.4 之前,您可以使用纬度和经度坐标或地点 ID 定义 Waypoint。虽然有时有效,但仅按纬度和经度规划路线有时会导致下车点或上车点不理想,尤其是在大型场所、公园或有多个入口的建筑物中。结果可能会贴靠到最近的路段,但该路段可能不是最方便或最正确的导航点。
增强型途经点选项允许提供更多背景信息,从而解决此问题。
使用导航点令牌
如需获得前往特定导航点(例如入口、装货平台或指定上车区)的最精确路线,您可以使用 navigationPointToken。此令牌是通过调用 Geocoding API 的 destinations 方法获得的。它表示与某个地点关联的特定可路由导航点。
如需指定导航点令牌,请执行以下操作:
- 从 Geocoding API 的 Destinations 方法响应中获取
navigationPointToken。 - 使用构建器中的
setNavigationPointToken()方法创建Waypoint。
注意:使用 setNavigationPointToken() 时,您不能同时使用 setLatLng() 或 setPlaceIdString()。这些方法与 setNavigationPointToken() 互斥。
// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithToken = Waypoint.builder()
.setTitle(destinationName)
.setNavigationPointToken(navPointToken)
.build();
// Use this waypoint in navigator.setDestinations()
结合地点 ID 与经纬度
从 v7.4 开始,您可以在创建 Waypoint 时同时提供地点 ID 以及纬度和经度坐标。如果您想指定一个精确的点(纬度/经度),同时仍提供整个地点的上下文(地点 ID),此方法会很有用。这样一来,Navigation SDK 就可以通过突出显示目的地建筑物或显示与地点 ID 相关的附近兴趣点,提供更丰富的到达体验。
// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
.setTitle(destinationName)
.setPlaceIdString(placeId)
.setLatLng(lat, lng)
.build();
// Use this waypoint in navigator.setDestinations()
注意事项
如果您同时提供 placeId 和 latlng:
- 相应路线主要面向指定的
latlng。 placeId用作上下文,以提升到达体验。- 回退:如果 SDK 确定所提供的
placeId对应的功能与给定的latlng相差太远,则会忽略placeId。在这种情况下,系统只会前往latlng,并且无法使用特定地点的到达体验增强功能。
有效途经点配置摘要
| 方法 | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
路由行为 | 突出显示目的地 |
|---|---|---|---|---|---|
| 仅限经纬度坐标 | set | 缺席 | 缺席 | 前往距离指定坐标最近的路段的路线 | 如果系统能以较高置信度推断出目的地,则显示此字段 |
| 仅限地点 ID | 缺席 | set | 缺席 | 前往相应地点 ID 的默认导航点的路线 | 出发地地点 ID |
| 仅限导航点令牌 | 缺席 | 缺席 | set | 前往令牌所表示的精确导航点的路线 | 来自 Geocoding API 的 destinations 方法请求中定义的目的地 |
| 经纬度坐标和地点 ID 的组合 | set | set | 缺席 | 前往距离指定坐标最近的路段的路线 | 来自地点 ID,但如果地点 ID 与纬度/经度坐标相距太远,则不会显示 |