computeRoutes 메서드 (REST) 및 ComputeRoutes 메서드 (gRPC)는 둘 다 다중선으로 표시된 경로를 있습니다. 이러한 API는 두 가지 유형의 다중선을 반환합니다.
기본 다중선 (기본값): 교통체증이 없는 경로를 나타냅니다. 정보를 표시합니다. 기본 폴리라인을 반환하는 요청 Routes Basic 요금으로 청구됩니다. 자세히 알아보기: 결제에 대해 자세히 알아보세요.
교통정보 인식 다중선: 교통상황에 대한 정보를 포함합니다. 살펴봤습니다 교통상황은 속도 단위로 표현됩니다. 지정된 간격으로 적용할 카테고리 (
NORMAL
,SLOW
,TRAFFIC_JAM
) 표시됩니다. 교통 인식 다중선에 대한 요청은 경로 기본 요금입니다. 결제 자세히 알아보기 Routes API로 이동합니다. 자세한 내용은 다중선 품질 구성
다중선에 대한 자세한 내용은 다음을 참조하세요.
대화형 다중선 인코더 유틸리티 을 사용하면 UI에서 인코딩된 폴리라인을 만들거나 지도에 표시할 폴리라인을 디코딩할 수 있습니다. 있습니다. 예를 들어, 이 유틸리티를 사용하여 코드를 참조하세요.
경로, 구간 또는 계단의 기본 다중선 요청
다중선은 Polyline (REST) 또는 Polyline (gRPC) 객체. 경로, 구간 및 단계 수준에서 응답에 폴리라인을 반환할 수 있습니다.
반환할 폴리라인을 지정하려면 응답 필드 마스크:
경로 수준에서 다음을 포함하여 응답에 다중선을 반환합니다.
routes.polyline
를 반환합니다.구간 수준에서, 구간의 각 구간에 대한 응답에 다중선을 반환합니다.
routes.legs.polyline
을(를) 포함하여 경로를 제공합니다.단계 수준에서, 각 단계마다 응답에 다중선을 반환합니다.
routes.legs.steps.polyline
를 포함하여 구간을 반환합니다.
예를 들어 전체 경로, 각 구간 및 구간의 각 단계:
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "travelMode": "DRIVE" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline,routes.legs.steps.polyline' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
이 요청은 경로, 경로의 각 구간 및 구간의 각 단계에 대해:
{ "routes": [ { "legs": [ { "polyline": { "encodedPolyline": "ipkcFfich...@Bs@?A?O?SD{A@o@B}@I?qA?_AA_@@_@?" } }, "steps": [ { "polyline": { "encodedPolyline": "kclcF...@sC@YIOKI" } }, { "polyline": { "encodedPolyline": "wblcF~...SZSF_@?" } }, ... ], "distanceMeters": 56901, "duration": "2420s", "polyline": { "encodedPolyline": "ipkcFfich...@Bs@?A?O?SD{A@o@B}@I?qA?_AA_@@_@?" } } ] }
이 요청에는 출발지와 목적지만 포함되므로 반환된 경로에는 구간이 하나만 포함됩니다. 따라서 구간과 경로는 동일합니다.
요청에 중간 경유지를 추가하면 경로에는 구간이 두 개 있습니다.
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "intermediates": [ { "address": "450 Serra Mall, Stanford, CA 94305, USA"}, ], "travelMode": "DRIVE", }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
이 요청은 각각 고유한 폴리라인이 있는 두 개의 구간과 전체 경로:
{ "routes": [ { "legs": [ { "polyline": { "encodedPolyline": "kclcFfqchV?A...?I@G?GAECCCEKICBAFG" } "steps": [ { "polyline": { "encodedPolyline": "kclcFfqch...YIOKI" } }, ... }, { "polyline": { "encodedPolyline": "ojmcFtethV?K...QOYQOGA?_@MUG[Ga@G" } "steps": [ { "polyline": { "encodedPolyline": "uypeFbo`jVgJq...PoBiC" } }, ... } ], "distanceMeters": 68403, "duration": "3759s", "polyline": { "encodedPolyline": "kclcFfqchV?A?CBKF[Ha...?GAECCCEKICBAFGJEBE" } } ] }
다중선 품질
다중선의 품질은 다음 용어로 설명할 수 있습니다.
점의 부동 소수점 정밀도
점은 위도 및 경도 값으로 지정되며 단일 정밀도 부동 소수점 형식으로 표시할 수 있습니다 이는 값이 작을 때 적합합니다. (정밀도를 표현할 수 있음) 값이 증가함에 따라 정밀도가 감소함 증가하기 때문입니다.
포함 computeRoutes 메서드 (REST)와 ComputeRoutes에 이 항목은
polylineEncoding
에 의해 제어됩니다.다중선을 구성하는 점의 수
점이 많을수록 폴리라인이 더 매끄러워집니다 (특히 참조)
포함 computeRoutes 메서드 (REST)와 ComputeRoutes에 이 항목은
polylineQuality
에 의해 제어됩니다.
다중선 인코딩 유형 구성
polylineEncoding
요청 옵션을 사용하여 다중선 유형을 제어합니다.
polylineEncoding
속성은 다중선을 다음과 같이 인코딩할지 제어합니다.
ENCODED_POLYLINE
(기본값):
인코딩된 다중선 알고리즘 형식
를 사용하거나, GEO_JSON_LINESTRING
는
GeoJSON LineString 형식
사용됩니다.
예를 들어 요청 본문에서 다음을 수행합니다.
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "travelMode": "DRIVE", "polylineEncoding": "ENCODED_POLYLINE" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
다중선 품질 구성
polylineQuality
는 다중선의 품질을 HIGH_QUALITY
또는
OVERVIEW
(기본값). OVERVIEW
를 사용하면 다중선이 작은
최대 25%의 포인트 수를 포함하며 요청 지연 시간이 HIGH_QUALITY
보다 짧습니다.
예를 들어 요청 본문에서 다음을 수행합니다.
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE", "polylineQuality": "HIGH_QUALITY", "polylineEncoding": "ENCODED_POLYLINE", "departureTime": "2023-10-15T15:01:23.045123456Z", ... }
교통정보 인식 다중선 요청
위에 표시된 예는 모두 기본 폴리라인을 반환합니다. 즉, 교통정보 또한 다중선에 경로 및 경로의 각 구간에 대한 교통정보입니다.
교통 인식 다중선에는 교통 상황과 관련된 정보가 포함되어 있으며
경로 교통상황은 속도 카테고리로 표현됩니다.
지정된 응답 간격 동안 (NORMAL
, SLOW
, TRAFFIC_JAM
)
다중선입니다. 간격은 시작 색인 (포함)으로 정의됩니다.
및 종료 (제외) 폴리라인 점을 사용합니다.
예를 들어 다음 응답은 다중선 간의 NORMAL
트래픽을 보여줍니다.
요점 2, 4:
{ "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" }
교통정보 인식 다중선을 계산하도록 요청하려면 다음을 설정하세요. 속성을 포함해야 합니다.
사용 설정하려면
extraComputations
배열 필드를TRAFFIC_ON_POLYLINE
로 설정합니다. 트래픽 계산에 사용됩니다.travelMode
를DRIVE
또는TWO_WHEELER
로 설정합니다. 기타 오류가 반환됩니다.TRAFFIC_AWARE
또는TRAFFIC_AWARE_OPTIMAL
라우팅을 지정합니다. 환경설정을 지정할 수 있습니다. 자세한 내용은 품질 구성 vs. 품질 구성 지연 시간응답 속성을 반환하도록 지정하는 응답 필드 마스크를 설정합니다.
경로 수준에서 다음과 같이 응답에 모든 여행 정보를 반환합니다. 응답 필드 마스크에
routes.travelAdvisory
가 포함됩니다. 돌려주기 교통정보만 표시하려면routes.travelAdvisory.speedReadingIntervals
구간 수준에서,
routes.legs.travelAdvisory
를 포함하여 경로의 각 구간 돌려주기 교통정보만 표시하려면routes.legs.travelAdvisory.speedReadingIntervals
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "travelMode": "DRIVE", "extraComputations": ["TRAFFIC_ON_POLYLINE"], "routingPreference": "TRAFFIC_AWARE_OPTIMAL" }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline,routes.legs.polyline,routes.travelAdvisory,routes.legs.travelAdvisory' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
교통정보 인식 다중선에 대한 응답 예
응답에서 교통정보 데이터는 폴리라인에 인코딩되어
travelAdvisory
필드, 유형
RouteLegTravelAdvisory
객체 (각 구간)와
RouteTravelAdvisory 객체 (경로)
예를 들면 다음과 같습니다.
{ "routes": [ { "legs": { "polyline": { "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD" }, // Traffic data for the leg. "travelAdvisory": { "speedReadingIntervals": [ { "endPolylinePointIndex": 1, "speed": "NORMAL" }, { "startPolylinePointIndex": 1, "endPolylinePointIndex": 2, "speed": "SLOW" }, { "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" } ] } }, "polyline": { "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD" }, // Traffic data for the route. "travelAdvisory": { "speedReadingIntervals": [ { "endPolylinePointIndex": 1, "speed": "NORMAL" }, { "startPolylinePointIndex": 1, "endPolylinePointIndex": 2, "speed": "SLOW" }, { "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" } ] } } ] }
RouteTravelAdvisory
와 RouteLegTravelAdvisory
모두 배열 필드를 포함합니다.
교통량 정보가 포함된 speedReadingIntervals
라는 이름의 클래스입니다. 각
배열의 객체는
SpeedReadingInterval (REST) 또는
SpeedReadingInterval
(gRPC) 객체를 사용합니다.
SpeedReadingInterval
객체에는 경로 간격에 대한 속도 판독이 포함되어 있습니다.
(예: NORMAL
, SLOW
, TRAFFIC_JAM
) 객체의 전체 배열은
경로의 전체 폴리라인을 겹치지 않게 합니다. 지정된
간격은 이전 간격의 끝점과 동일합니다.
모든 간격은 startPolylinePointIndex
로 설명됩니다.
endPolylinePointIndex
, 해당하는 속도 카테고리
간격 내에 시작 색인이 없으면 색인 0에 해당합니다.
proto3 권장사항
startPolylinePointIndex
및 endPolylinePointIndex
값은
항상 연속입니다. 예를 들면 다음과 같습니다.
{ "startPolylinePointIndex": 2, "endPolylinePointIndex": 4, "speed": "NORMAL" }
이 경우 교통 상황은 색인 2와 색인 4가 동일했습니다.
Maps SDK를 사용하여 교통정보 인식 다중선 렌더링
다양한 맞춤 색상, 획 및 기능 등 Google Maps SDK에서 제공하는 몇 가지 패턴을 보여 줍니다. 다중선 사용에 대한 자세한 내용은 보기 Android용 다중선 기능 및 iOS용 다중선 기능에 대해 자세히 알아보세요.
다중선 렌더링 예
Maps SDK 사용자는 맞춤설정된 매핑을 정의할 수 있습니다. 다중선 렌더링 스키마 사이의 논리를 나타냅니다. 예를 들어 'NORMAL' 또는 'NORMAL'을 굵은 파란색 선과 같은 속도로 지도가 'SLOW'인 동안 표시 예를 들어 속도는 굵은 주황색 선으로 표시될 수 있습니다.
다음 스니펫은 멜버른에서 퍼스까지 왔습니다. 자세한 내용은 모양 맞춤설정 (Android의 경우) 및 다중선 맞춤설정 (iOS의 경우)
Android
자바
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734)) .width(25) .color(Color.BLUE) .geodesic(true));
Kotlin
val line: Polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
iOS
Objective-C
GMSMutablePath *path = [GMSMutablePath path]; [path addLatitude:-37.81319 longitude:144.96298]; [path addLatitude:-31.95285 longitude:115.85734]; GMSPolyline *polyline = [GMSPolyline polylineWithPath:path]; polyline.strokeWidth = 10.f; polyline.strokeColor = .blue; polyline.geodesic = YES; polyline.map = mapView;
Swift
let path = GMSMutablePath() path.addLatitude(-37.81319, longitude: 144.96298) path.addLatitude(-31.95285, longitude: 115.85734) let polyline = GMSPolyline(path: path) polyline.strokeWidth = 10.0 polyline.geodesic = true polyline.map = mapView