Android용 Navigation SDK는 경유지 또는 탐색 지점을 지정하는 향상된 방법을 제공하여 특히 입구가 여러 개이거나 특정 탐색 지점이 있는 목적지의 경우 더 정확한 경로와 더 나은 도착 환경을 제공합니다. 위치와 추가 경로 컨텍스트를 인코딩하는 문자열인 navigationPointToken를 사용하여 정확한 위치로 경로를 지정할 수 있습니다. 위도 및 경도 좌표를 장소 ID와 결합하여 컨텍스트를 추가할 수도 있습니다.
배경
v7.4 이전에는 위도 및 경도 좌표 또는 장소 ID를 사용하여 Waypoint를 정의할 수 있었습니다. 위도와 경도만으로 경로를 지정하는 것은 때로는 효과적일 수 있지만, 특히 대형 공연장, 공원 또는 입구가 여러 개인 건물의 경우 최적의 하차 지점이나 승차 지점으로 이어지지 않을 수 있습니다. 결과가 가장 가까운 도로 세그먼트에 스냅될 수 있으며, 이는 가장 편리하거나 정확한 탐색 지점이 아닐 수 있습니다.
향상된 경유지 옵션은 더 많은 컨텍스트를 제공하여 이 문제를 해결합니다.
탐색 지점 토큰 사용
입구, 하역장, 지정된 승차 구역과 같은 특정 탐색 지점으로 가장 정확하게 경로를 안내하려면 navigationPointToken를 사용하면 됩니다. 이 토큰은 Geocoding API의 destinations 메서드를 호출하여 가져옵니다. 장소와 연결된, 경로 지정이 가능한 특정 탐색 지점을 나타냅니다.
탐색 지점 토큰을 지정하려면 다음 안내를 따르세요.
- Geocoding API의 Destinations 메서드 응답에서
navigationPointToken를 가져옵니다. - 빌더에서
setNavigationPointToken()메서드를 사용하여Waypoint를 만듭니다.
// 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()
내비게이션 지점 토큰 및 경로 토큰 사용
Geocoding API를 통해 탐색 지점 토큰을 검색하고, Routes API에서 경로 토큰을 검색한 다음, 탐색 지점 토큰과 경로 토큰을 모두 Navigation SDK에 전달할 수 있습니다. 이는 Routes API를 사용하여 이동 가격을 계산하고 내비게이션 지점 토큰의 정밀도를 원하는 차량 공유 또는 배송과 같은 시나리오에서 유용합니다.
Navigation SDK는 경로 토큰을 사용하여 가격을 계산하는 데 사용한 것과 동일한 경로에서 내비게이션을 시작합니다. 이렇게 하면 이동에 더 길거나 짧은 경로가 사용되어 '가격 충격'이 발생할 위험이 줄어듭니다.
탐색 지점 토큰을 사용하여 위치 지정 및 경로 토큰 만들기에 대한 자세한 내용은 Routes API 문서를 참고하세요. 경로 토큰을 사용하여 경로를 계획하는 방법을 알아보려면 '경로 계획'을 참고하세요.
이 다이어그램은 차량 공유 또는 배달 앱에서 내비게이션 지점 토큰과 경로 토큰을 함께 사용하는 방법을 보여줍니다.
장소 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은 도착 환경을 개선하기 위한 컨텍스트로 사용됩니다.- 대체: 제공된
placeId가 지정된latlng에서 너무 멀리 떨어진 지형지물에 해당한다고 SDK가 판단하면placeId가 무시됩니다. 이 시나리오에서는 경로가latlng로만 진행되며 장소별 도착 환경 개선사항을 사용할 수 없습니다.
유효한 경유지 구성 요약
| 메서드 | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
라우팅 동작 | 목적지 강조 표시 |
|---|---|---|---|---|---|
| 위도/경도 좌표만 | set | 없음 | 없음 | 정의된 좌표에 가장 가까운 도로 구간으로 라우팅 | 목적지를 높은 신뢰도로 추론할 수 있는 경우 표시됩니다. |
| 장소 ID만 | 없음 | set | 없음 | 장소 ID의 기본 탐색 지점으로 가는 경로 | 출발지 장소 ID |
| 탐색 지점 토큰만 | 없음 | 없음 | set | 토큰으로 표시되는 정확한 탐색 지점으로 가는 경로 | 원래 Geocoding API의 목적지 메서드 요청에 정의된 목적지에서 |
| 위도/경도 좌표 및 장소 ID 조합 | set | set | 없음 | 정의된 좌표에 가장 가까운 도로 구간으로 라우팅 | 장소 ID에서 가져옵니다. 단, 장소 ID가 위도/경도 좌표에서 너무 멀리 떨어져 있으면 표시되지 않습니다. |