이 문서는 이전 버전의 GMP API를 사용한 이전 도움말을 업데이트한 것입니다. 이 콘텐츠는 2023~24년에 출시된 Places API의 새 버전 및 2023년에 출시된 Routes API로 업데이트되었습니다.
일반적으로 사용자가 관심 장소 (POI)로 운전할 때는 주차장이나 액세스 포인트와 같은 근처 위치로의 내비게이션이 필요합니다. 공항이나 쇼핑몰에 가야 하는 운전자를 생각해 보세요. 공항으로 이동할 때 운전자가 공항 중앙이 아닌 터미널이나 하차 지점에 도착하려고 합니다. 마찬가지로 자동차를 소유한 사용자에게는 쇼핑몰 옆에 있는 주차장이 훨씬 더 나은 옵션일 수 있습니다. 이 경우 운전자를 안내하는 앱이나 서비스를 개발할 때는 먼저 운전자가 도착하려는 위치를 찾은 다음 운전자에게 해당 위치 근처의 선택적 목적지를 제공합니다. 이 접근 방식을 사용하면 Google Maps Platform에서 제공하는 위치 데이터를 활용하는 작지만 스마트한 개발 작업으로 고객에게 더 나은 서비스를 제공하고 고객의 시간을 소중하게 생각한다는 점을 보여줄 수 있습니다.
새 Places API와 Routes API를 순차적으로 또는 조합하여 사용하여 목적지 옆에 주차할 적절한 위치를 식별하는 방법을 보여줍니다. 이 솔루션은 불확실성과 여러 상호작용을 제거하여 최종 목적지에 더 가까워진 후 주차할 장소를 찾는 것을 목표로 합니다. 이러한 사례를 구체적으로 구현하는 방법을 보여주는 두 가지 예를 살펴보세요.
예 1 - 주차장이 없는 관광 명소
경로를 별도로 가져와야 하므로 갓길과 직접 연결되지 않은 위치를 선택합니다. 도착지는 파리의 노트르담이고 출발지는 Gare de l'Est 기차역(48.87697775149635, 2.3592247806755564)입니다.
운전자는 노트르담 북쪽에서 약 16분 거리에 있는 역에서 출발합니다. 노트르담은 다리로 연결된 섬에 있는 유명한 관광 명소로, 일부 일방통행 도로가 있으며 근처에 대형 주차장이 없으므로 흥미로운 과제입니다.
- Places API 요청
이 Places API 요청 예에서는 텍스트 검색을 사용하여 노트르담을 찾습니다. 자세한 내용은 개발자 문서를 참고하세요. 이 예시에서 '$APIKEY'는 Google Cloud 콘솔에서 사용 설정한 Google Maps Platform 장소 및 경로 API의 API 키입니다. 자세한 내용은 Google Maps Platform 시작하기 문서를 참고하세요.
새 Places API 요청의 형식이 새로 변경되었습니다. 응답 필드는 더 이상 고정되지 않으며 개발자는 헤더에서 필드 마스크를 정의해야 합니다. 필드 마스크 사용은 문서에 정의되어 있습니다.
curl -X POST --data @notre_dame.json \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: places.id,places.displayName,places.formattedAddress,places.location' \
'https://places.googleapis.com/v1/places:searchText'
검색 매개변수에 'notre_date.json' 콘텐츠를 사용합니다.
{
"textQuery": "Notre Dame, Paris",
"languageCode": "en"
}
위 요청에 대한 응답은 다음과 같은 위도 및 경도 좌표를 제공합니다.
{
"places": [
{
"id": "ChIJATr1n-Fx5kcRjQb6q6cdQDY",
"formattedAddress": "6 Parvis Notre-Dame - Pl. Jean-Paul II, 75004 Paris, France",
"location": {
"latitude": 48.852968200000007,
"longitude": 2.3499021
},
"displayName": {
"text": "Cathédrale Notre-Dame de Paris",
"languageCode": "en"
}
}
]
}
보시다시피 좌표가 노트르담 대성당을 정확히 가리킵니다.
개발자 또는 서비스 제공업체는 운전자에게 '노트르담 근처에 주차장 찾으시나요?'라는 메시지를 자동으로 표시하는 것이 좋습니다. 운전자가 전기자동차를 타고 있다면 충전소를 검색하는 것이 좋습니다. 사용자 환경은 기기와 화면에 따라 다르지만 이 경우 잠시 후 사라지는 은근한 대화상자 텍스트를 고려해 볼 수 있습니다. 노트르담 근처의 주차장을 찾으려면 반경 500m의 'parking' 및 'electric_vehicle_charging_station' 유형으로 Places API nearby search를 실행합니다. 다음 예에서는 노트르담에서 500미터 이내의 주차장으로 결과가 편향됩니다.
curl -X POST -d '{
"includedTypes": ["parking", "electric_vehicle_charging_station"],
"maxResultCount": 10,
"rankPreference": "DISTANCE",
"locationRestriction": {
"circle": {
"center": {
"latitude": 48.852968200000007,
"longitude": 2.3499021},
"radius": 500.0
}
}
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H "X-Goog-FieldMask: places.displayName,places.location" \
https://places.googleapis.com/v1/places:searchNearby
첫 번째 결과는 48.854981, 2.350629에 있는 충전소이지만 이 예시를 실행할 때는 결과가 다를 수 있습니다. 다음 부분에서 Routes API 요청을 실행할 때 이 위치를 사용합니다.
- **Routes API 요청 **
역에서 노트르담 근처의 충전소까지의 경로를 찾으려면 Routes API 요청을 실행해야 합니다. 출발지 및 도착지 매개변수만 설정하면 됩니다. 자세한 내용은 개발자 문서를 참고하세요.
curl -X POST -d '{
"origin":{
"location":{
"latLng":{
"latitude": 48.87697775149635,
"longitude": 2.3592247806755564
}
}
},
"destination":{
"location":{
"latLng":{
"latitude": 48.854981,
"longitude": 2.350629
}
}
},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE",
"departureTime": "2024-05-16T15:01:23.045123456Z",
"computeAlternativeRoutes": false,
"routeModifiers": {
"avoidTolls": false,
"avoidHighways": false,
"avoidFerries": false
},
"languageCode": "en-US",
"units": "METRIC"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,routes.polyline.encodedPolyline' \
'https://routes.googleapis.com/directions/v2:computeRoutes'
Routes API 응답에는 일반적으로 여러 경로 추천이 포함됩니다. 응답에 경로 데이터를 포함하려면 필드 마스크에서 'routes.legs'를 정의합니다. 각 경로는 여러 '구간'으로 구성되며, 구간에는 이동 거리와 좌표를 보여주는 여러 '단계'가 포함됩니다. 자동차로 도달할 수 있는 최종 좌표를 찾으려면 선택한 경로의 마지막 구간의 마지막 단계에 있는 'endLocation' 필드를 사용하세요. "latitude": 48.854937299999996, "longitude": 2.3505841999999997
이 위치는 첫 번째 선택지가 아닌 것처럼 보일 수 있지만 지도나 Google 스트리트 뷰를 보면 이 위치가 노트르담에서 도보로 6~7분 거리에 있어 매우 가까운 위치에 있습니다.
충전소 주차장부터 노트르담까지의 도보 경로
예 1 요약
보시다시피 자동차 주차장을 찾으려면 몇 번의 API 호출과 운전자에게 추천을 표시하기만 하면 됩니다. 이렇게 하면 사용자가 일방통행 도로를 돌아다니거나 붐비는 관광지에서 주차할 곳을 찾지 않아도 되므로 시간을 절약할 수 있습니다. 요약하면 다음과 같은 API 요청을 실행했습니다.
- 노트르담 좌표를 찾기 위한 Places API 텍스트 검색 요청
- Places API Nearby Search를 사용하여 해당 좌표에서 500m 이내에 전기자동차 충전소가 있는 주차장을 찾습니다.
- 충전소까지의 경로를 찾기 위한 Routes API 요청
예시 2 - 대형 공항의 터미널로 안내
운전자가 여러 위치, 관심 장소 또는 잠재적 하차 지점이 있는 넓은 지역으로 이동하려고 하는 경우를 예로 들 수 있습니다. 운전자는 영국 웸블리 스타디움 (51.557263604707224, -0.2794575145680608)에서 출발하여 런던 히드로 공항 터미널 5로 이동하려고 합니다.
새 Places API 자동 완성의 장점은 API가 하위 부지를 잠재적 검색 결과로 예측하는 것과 함께 기본 유형을 검색 기준으로 정의할 수 있다는 점입니다. 이 경우 공항을 검색하면 터미널도 반환됩니다. 포함하거나 제외할 유형의 전체 목록은 문서에서 확인할 수 있습니다.
curl -X POST -d '{
"input": "Heathrow",
"includedPrimaryTypes": ["airport"]
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
https://places.googleapis.com/v1/places:autocomplete
위의 쿼리를 실행하면 터미널 및 터미널의 개별 하차 지점 목록이 표시됩니다. 결과 목록에서 '런던 히드로 공항 터미널 5'와 장소 ID를 확인할 수 있습니다.
"place_id" : "ChIJo21hnPxxdkgRksRL0KQRWII",
'placeId' 매개변수를 사용하면 임의의 좌표가 아닌 장소에 도달하려고 한다고 Routes API에 알릴 수 있습니다.
curl -X POST -d '{
"origin":{
"location":{
"latLng":{
"latitude": 51.557263604707224,
"longitude": -0.2794575145680608
}
}
},
"destination":{
"placeId": "ChIJo21hnPxxdkgRksRL0KQRWII"
},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE",
"departureTime": "2024-05-16T15:01:23.045123456Z",
"computeAlternativeRoutes": false,
"languageCode": "en-US",
"units": "METRIC"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,routes.polyline.encodedPolyline' \
'https://routes.googleapis.com/directions/v2:computeRoutes'
이전 예와 마찬가지로 JSON 응답의 모든 단계를 읽으면 경로의 마지막 부분과 도착 위치의 위도 및 경도 좌표 (51.4714348, 'longitude': -0.48967890000000003)를 확인할 수 있습니다.
예시 2 요약
이전 예와 마찬가지로 드라이버에 향상된 안내를 제공하기 위한 개발 작업은 매우 적으며 드라이버에 절약되는 시간의 이점을 측정할 수 있습니다. 다음과 같은 요청을 처리했습니다.
- 히드로 공항 터미널 5를 찾기 위한 Places API 자동 완성 (신규) 요청
- 웸블리에서 터미널 5까지의 경로를 가져오기 위한 Routes API 요청
이 예에서는 새로운 Places API 기능을 간단히 살펴봅니다. 비행장, 국제 공항과 같은 새로운 장소 유형을 살펴보세요.
결론
보시다시피 자동차로 이동하는 고객에게 프리미엄 서비스를 제공하는 데 필요한 개발 노력은 비교적 적으며 고객의 니즈에 대해 어떻게 생각하고 있는지 보여줄 수 있습니다.
개발 목적으로는 고객을 위한 서비스를 빌드하는 데 도움이 되는 여러 라이브러리와 도구를 사용할 수 있습니다. 공개적으로 제공되는 Google 지도 플랫폼용 GitHub 저장소를 살펴보세요.
다음 작업
GMP 시작하기 : https://developers.google.com/maps/get-started
추천 추가 자료
Places API 자동 완성 (신규) 문서: https://developers.google.com/maps/documentation/places/web-service/place-autocomplete
Routes API 문서: https://developers.google.com/maps/documentation/routes
참여자
책임 저자: 미코 퐙바넨 | Google 지도 플랫폼 솔루션 엔지니어