Ten dokument jest odświeżoną wersją starszego artykułu, w którym użyto poprzednich wersji interfejsów GMP API. Te treści zostały zaktualizowane do nowej wersji interfejsu Places API, która została wprowadzona w latach 2023–2024, oraz interfejsu Routes API, który został wprowadzony w 2023 r.
Zwykle, gdy użytkownik jedzie do punktu orientacyjnego, potrzebuje nawigacji do pobliskiej lokalizacji, np. parkingu lub punktu dostępu. Wyobraź sobie kierowcę, który musi dojechać na lotnisko lub do centrum handlowego. Podczas dojazdu na lotnisko kierowca próbuje dotrzeć do terminalu lub punktu wysiadania, a nie do centrum lotniska. Podobnie parking obok centrum handlowego może być znacznie lepszą opcją dla użytkownika z samochodem. W takim przypadku podczas tworzenia aplikacji lub usługi, która ma prowadzić kierowcę, najpierw znajdź miejsce docelowe, a potem zaproponuj kierowcy opcjonalne miejsca docelowe w pobliżu. Dzięki temu możesz zapewnić klientom lepszą obsługę i pokazać, że cenisz ich czas. Wymaga to niewielkiego, ale przemyślanego nakładu pracy deweloperskiej, która wykorzystuje dane o lokalizacji dostarczane przez Google Maps Platform.
Pokażemy, jak używać nowego interfejsu Places API i interfejsu Routes API w sekwencji lub w połączeniu, aby znaleźć odpowiednie miejsce do parkowania w pobliżu celu podróży. To rozwiązanie ma na celu wyeliminowanie niepewności i wielu interakcji podczas szukania miejsca parkingowego w trakcie jazdy, gdy zbliżasz się do miejsca docelowego. Przyjrzyj się szczegółowo 2 przykładom, jak można wdrożyć te przypadki.
Przykład 1. Atrakcja turystyczna bez parkingu
Wybierz lokalizację, która nie jest bezpośrednio połączona z drogą, aby trasę trzeba było pobrać osobno. Miejscem docelowym będzie katedra Notre Dame w Paryżu, a punktem początkowym będzie dworzec kolejowy Gare de l'Est (48.87697775149635, 2.3592247806755564).
Kierowca odjeżdża ze stacji około 16 minut na północ od katedry Notre Dame. Notre Dame to słynna atrakcja turystyczna na wyspie, na którą można dostać się mostem. W pobliżu znajdują się ulice jednokierunkowe i nie ma dużego parkingu, więc będzie to ciekawe wyzwanie.
1. Żądanie do interfejsu Places API
Ten przykładowy request do interfejsu Places API używa wyszukiwania tekstowego do znalezienia katedry Notre Dame. Szczegóły znajdziesz w dokumentacji dla programistów. W tych przykładach „$APIKEY” to klucz interfejsu API, który masz w przypadku interfejsów Places API i Routes API Google Maps Platform włączonych w Google Cloud Console. Szczegółowe wyjaśnienie znajdziesz w dokumentacji pierwszych kroków z Google Maps Platform.
Nowe żądania do interfejsu Places API mają nowy format. Pola odpowiedzi nie są już stałe i jako deweloper musisz zdefiniować maskę pola w nagłówku. Użycie maski pola jest zdefiniowane w dokumentacji.
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'
Z zawartością pliku „notre_date.json” jako parametrów wyszukiwania:
{
"textQuery": "Notre Dame, Paris",
"languageCode": "en"
}
Odpowiedź na powyższe żądanie zawiera te współrzędne geograficzne:
{
"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"
}
}
]
}
Jak widać, współrzędne wskazują katedrę Notre Dame.
![]() |
![]() |
Jako deweloper lub dostawca usług możesz automatycznie wyświetlać kierowcy pytanie „Szukasz parkingu w pobliżu katedry Notre Dame?” lub, jeśli kierowca ma pojazd elektryczny, wyszukać stację ładowania. Sposób korzystania z aplikacji będzie się różnić w zależności od urządzenia i ekranu, ale w tym przypadku warto rozważyć użycie subtelnego tekstu w oknie dialogowym, który znika po krótkim czasie. Aby znaleźć parking w pobliżu katedry Notre Dame, wykonaj wyszukiwanie w pobliżu za pomocą interfejsu Places API z typami „parking” i „electric_vehicle_charging_station” oraz promieniem 500 metrów. W tym przykładzie wyniki będą faworyzować parkingi w odległości 500 metrów od katedry Notre Dame.
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
Pierwszy wynik to stacja ładowania o współrzędnych 48, 854981, 2, 350629. Jednak w momencie uruchomienia tego przykładu wyniki mogą się różnić. Użyj tej lokalizacji w następnej części, w której wysyłamy żądanie do interfejsu Routes API.
2. Żądanie do interfejsu Routes API
Aby znaleźć trasę ze stacji do stacji ładowania w pobliżu katedry Notre Dame, musisz wysłać żądanie do interfejsu Routes API. Wystarczy ustawić parametry miejsca początkowego i docelowego. Więcej opcji znajdziesz w dokumentacji dla programistów.
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'
Odpowiedź interfejsu Routes API zwykle zawiera kilka propozycji tras. Aby uwzględnić w odpowiedzi dane trasy, zdefiniuj w parametrze fieldmask wartość „routes.legs”. Każda trasa składa się z kilku „odcinków”, a te z kolei z kilku „kroków” zawierających odległość i współrzędne. Aby znaleźć końcowe współrzędne, do których można dotrzeć samochodem, użyj pola „endLocation” ostatniego kroku ostatniego odcinka wybranej trasy. "latitude": 48.854937299999996, "longitude": 2.3505841999999997
Ta lokalizacja może nie wydawać się najlepszym wyborem, ale gdy spojrzysz na mapę lub Google Street View, zobaczysz, że znajduje się w bardzo bliskiej odległości od katedry Notre Dame (około 6–7 minut pieszo).
Trasa piesza od miejsca parkingowego przy stacji ładowania do katedry Notre Dame
Podsumowanie przykładu 1
Jak widać, znalezienie miejsca parkingowego dla samochodu wymaga tylko kilku wywołań interfejsu API i wyświetlenia sugestii kierowcy. Dzięki temu użytkownicy zaoszczędzą czas, ponieważ nie będą jeździć po ulicach jednokierunkowych ani szukać miejsca do zaparkowania w zatłoczonym miejscu turystycznym. Podsumowując, wykonaliśmy te żądania interfejsu API:
- Żądanie wyszukiwania tekstowego w interfejsie Places API, aby znaleźć współrzędne katedry Notre Dame
- Wyszukiwanie w pobliżu za pomocą interfejsu Places API, aby znaleźć parking ze stacją ładowania samochodów elektrycznych w odległości 500 metrów od podanych współrzędnych.
- Żądanie do interfejsu Routes API dotyczące znalezienia trasy do stacji ładowania
Przykład 2. Nawigacja do terminalu na dużym lotnisku
Rozważmy inny przykład, w którym kierowca próbuje dotrzeć do dużego obszaru z wieloma lokalizacjami, punktami POI lub potencjalnymi miejscami docelowymi. Kierowca wyjeżdża ze stadionu Wembley w Wielkiej Brytanii (51.557263604707224, -0.2794575145680608) i chce dotrzeć na terminal 5 lotniska Londyn-Heathrow.
Nowy interfejs Places API do autouzupełniania umożliwia zdefiniowanie głównych typów jako kryteriów wyszukiwania w połączeniu z interfejsem API, który przewiduje podrzędne obiekty jako potencjalne wyniki wyszukiwania. W tym przypadku oznacza to, że wyszukiwanie lotniska i parkingu zwróci też terminale lub parkingi. Pełną listę typów do uwzględnienia lub wykluczenia znajdziesz w dokumentacji.
curl -X POST -d '{
"input": "Heathrow",
"includedPrimaryTypes": ["airport", "parking"]
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
https://places.googleapis.com/v1/places:autocomplete
Powyższe zapytanie zwraca listę terminali i poszczególnych punktów odbioru na tych terminalach. Na liście wyników możemy znaleźć „London Heathrow Airport Terminal 5” i jego identyfikator miejsca:
"place_id" : "ChIJo21hnPxxdkgRksRL0KQRWII",
Za pomocą parametru „placeId” możemy poinformować interfejs Routes API, że chcemy dotrzeć do miejsca, a nie do dowolnych współrzędnych.
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'
Podobnie jak w poprzednim przykładzie, po przeczytaniu wszystkich kroków w odpowiedzi JSON znajdziesz ostatnią część podróży oraz współrzędne geograficzne (szerokość i długość geograficzna) miejsc docelowych (51.4714348, "longitude": -0.48967890000000003).
Podsumowanie przykładu 2
Podobnie jak w poprzednim przykładzie, wysiłek związany z opracowaniem ulepszonych wskazówek dla kierowcy jest bardzo mały, a korzyści w postaci zaoszczędzonego czasu można zmierzyć. Wykonaliśmy te prośby:
- Żądanie autouzupełniania w interfejsie Places API (nowym) w celu znalezienia terminalu 5 lotniska Heathrow
- Żądanie do interfejsu Routes API dotyczące wyznaczenia trasy z Wembley do terminalu 5
Ten przykład to tylko niewielka część nowych funkcji interfejsu Places API. Sprawdź niektóre nowe typy miejsc, takie jak pas startowy i lotnisko międzynarodowe.
Podsumowanie
Jak widzisz, nakład pracy potrzebny do zapewnienia klientom podróżującym samochodem usługi premium jest dość mały, a Ty możesz pokazać, że myślisz o ich potrzebach.
Na potrzeby programowania możesz używać wielu dostępnych bibliotek i narzędzi, które pomogą Ci tworzyć usługi dla klientów. Zapoznaj się z naszym publicznie dostępnym repozytorium GitHub dla Google Maps Platform.
Następne działania
Pierwsze kroki w GMP : https://developers.google.com/maps/get-started
Sugerowane dalsze lektury
Dokumentacja interfejsu Places API do autouzupełniania (nowość): https://developers.google.com/maps/documentation/places/web-service/place-autocomplete
Dokumentacja interfejsu Routes API: https://developers.google.com/maps/documentation/routes
Współtwórcy
Główny autor: Mikko Toivanen | Inżynier rozwiązań Google Maps Platform