Wskazówki, które ułatwią użytkownikom korzystanie z nawigacji samochodem

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 kompleksu lotniskowego. 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.

Schemat systemu

Pokażemy, jak w sekwencji lub w połączeniu używać nowego interfejsu Places APIinterfejsu Routes API, 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).

Gare l'Est

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 z dostępem do mostu, kilkoma ulicami jednokierunkowymi i bez dużego parkingu w pobliżu, więc to będzie ciekawe wyzwanie.

1. Żądanie do interfejsu Places API

Ten przykładowy kod żądania do interfejsu Places API używa wyszukiwania tekstowego do znalezienia katedry Notre Dame. Szczegóły znajdziesz w dokumentacji dla programistów. „$APIKEY” w tych przykładach to klucz interfejsu API, który masz włączony w interfejsach API Miejsc i Tras Google Maps Platform 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.

Zdjęcie wejścia do Notre Dame Mapa okolicy katedry 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 samochód 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ć wyświetlanie subtelnego tekstu w oknie dialogowym, który znika po krótkim czasie. Aby znaleźć parking w pobliżu katedry Notre Dame, użyj interfejsu Places API do wyszukiwania w pobliżu z typami „parking” i „electric_vehicle_charging_station” oraz promieniem 500 metrów. Poniższy przykład spowoduje, że wyniki będą zawierać obszary parkingowe 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, w parametrze fieldmask zdefiniuj „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 do Notre Dame

Trasa piesza z miejsca parkingowego przy stacji ładowania do katedry Notre Dame

Podsumowanie przykładu 1

Jak widać, znalezienie parkingu 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, aby znaleźć trasę do stacji ładowania;

Przykład 2. Nawigacja do terminalu na dużym lotnisku

Mapa lotniska Heathrow

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ć do terminalu 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, które możesz uwzględnić lub wykluczyć, 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 API Trasy, ż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ęść trasy oraz współrzędne geograficzne (szerokość i długość geograficzna) miejsc docelowych (51.4714348, "longitude": -0.48967890000000003).

Widok Street View terminalu 5

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 rodzaje 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 autouzupełniania w interfejsie Places API (nowa): 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