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

Ten dokument jest odświeżeniem starszego artykułu, który korzystał z poprzednich wersji interfejsów GMP API. Treści te zostały zaktualizowane do nowej wersji interfejsu Places API, która została wprowadzona w latach 2023–24, oraz interfejsu Routes API, który został wprowadzony w 2023 r.

Zwykle, gdy użytkownik jedzie do punktu zainteresowania, potrzebuje nawigacji do pobliskiej lokalizacji, takiej jak parking lub punkt dostępu. Wyobraź sobie kierowcę, który musi dojechać na lotnisko lub do centrum handlowego. Podczas jazdy na lotnisko kierowca stara się dotrzeć do terminalu lub miejsca wysadzania, a nie do centrum lotniska. Podobnie parking obok centrum handlowego może być znacznie lepszą opcją dla użytkownika z samochodem. W takim przypadku, gdy tworzysz aplikację lub usługę, która ma służyć jako przewodnik dla kierowcy, najpierw znajdź miejsce docelowe, a potem zaproponuj kierowcy opcjonalne miejsca docelowe w pobliżu. Dzięki temu możesz świadczyć lepszą obsługę klienta i pokazywać, że cenisz jego czas, przy niewielkim, ale inteligentnym wysiłku programistycznym, który wykorzystuje dane o lokalizacji udostępniane przez Google Maps Platform.

Schemat systemu

Pokażemy Ci, jak używać nowego interfejsu Places APIinterfejsu Routes API pojedynczo lub w połączeniu, aby znaleźć odpowiednie miejsce do zaparkowania obok miejsca docelowego. Rozwiązanie to ma na celu wyeliminowanie niepewności i wielokrotnych interakcji, aby znaleźć miejsce parkingowe podczas zbliżania się do miejsca docelowego. Zapoznaj się z 2 przykładami szczegółowego wdrażania tych rozwiązań.

Przykład 1. Atrakcja turystyczna bez parkingu

Wybierz lokalizację, która nie jest bezpośrednio połączona z drogą, aby trasa musiała być pobierana osobno. Punktem docelowym jest Notre Dame w Paryżu, a jako punkt początkowy użyjemy dworca kolejowego Gare de l'Est (48.87697775149635, 2.3592247806755564).

Gare l'Est

Kierowca opuszcza stację około 16 minut na północ od Notre Dame. Notre Dame to słynna atrakcja turystyczna na wyspie, do której można dojechać przez most. Na wyspie znajdują się też ulice jednokierunkowe, a w pobliżu nie ma dużego parkingu, więc będzie to ciekawe wyzwanie.

  1. Żądanie do interfejsu Places API

W tym przykładzie żądanie interfejsu Places API korzysta z wyszukiwania tekstowego, aby znaleźć Notre Dame. Więcej informacji znajdziesz w dokumentacji dla programistów. W tych przykładach „$APIKEY” to klucz interfejsu API, który masz dla interfejsów Places API i Routes API platformy Map Google włączonych w Google Cloud Console. Więcej informacji znajdziesz w dokumentacji Pierwsze kroki z Google Maps Platform.

Żądania do nowego interfejsu Places API mają nowy format. Pola odpowiedzi nie są już ustalone, dlatego jako deweloper musisz zdefiniować maskę pola w nagłówku. Zastosowanie maski pola jest opisane 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'

W przypadku zawartości pliku „notre_date.json” dla 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ą na katedrę Notre Dame.

Zdjęcie wejścia do katedry Notre Dame Mapa okolicy katedry Notre Dame

Jako deweloper lub dostawca usług możesz automatycznie wyświetlać kierowcy komunikat „Szukasz parkingu w pobliżu Notre Dame?”. Jeśli kierowca ma pojazd elektryczny, możesz też wyszukać stację ładowania. Wrażenia użytkownika będą się różnić w zależności od urządzenia i ekranu, ale w tym przypadku warto rozważyć użycie subtelnego tekstu dialogowego, który znika po krótkim czasie. Aby znaleźć parking w pobliżu Notre Dame, wykonaj wyszukiwanie w usłudze Places API z typami „parking” i „electric_vehicle_charging_station” w promieniu 500 metrów. W tym przykładzie wyniki będą dotyczyć parkingów w odległości do 500 metrów od 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

Pierwszym wynikiem jest stacja ładowania o współrzędnych 48.854981, 2.350629, ale w momencie, gdy uruchomisz to przykładowe zapytanie, wyniki mogą się różnić. Użyj tej lokalizacji w następnym fragmencie kodu, w którym wysyłasz żądanie do interfejsu Routes API.

  1. **Żądanie do interfejsu Routes API **

Aby znaleźć trasę ze stacji do stacji ładowania w pobliżu Notre Dame, musisz wysłać żądanie do interfejsu Routes API. Wystarczy ustawić parametry źródła i miejsca 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ć dane trasy w odpowiedzi, zdefiniuj w fieldmask element „routes.legs”. Każda trasa składa się z kilku „etapów”, które zawierają wiele „krok" z odpowiednimi odległościami i współrzędnymi. Aby znaleźć końcowe współrzędne, do których można dojechać samochodem, użyj pola „endLocation” ostatniego kroku ostatniego etapu wybranej trasy. "latitude": 48.854937299999996, "longitude": 2.3505841999999997

Ta lokalizacja może wydawać się nie najlepszym wyborem, ale gdy spojrzysz na mapę lub Google Street View, zobaczysz, że jest ona bardzo blisko Notre Dame (6–7 minut pieszo).

Trasa do Notre Dame

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ą musieli jeździć po ulicach jednokierunkowych ani szukać miejsca do zaparkowania samochodu w tłoku wokół atrakcji turystycznych. Podsumowując, wykonaliśmy te prośby o dostęp do interfejsu API:

  • żądanie wyszukiwania tekstowego w interfejsie Places API w celu znalezienia współrzędnych Notre Dame;
  • wyszukiwanie w pobliżu za pomocą interfejsu Places API w celu znalezienia parkingu ze stacją ładowania pojazdów elektrycznych w odległości do 500 metrów od tych współrzędnych;
  • żądanie interfejsu Routes API w celu znalezienia trasy do stacji ładowania;

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

Mapa lotniska Heathrow

Rozważmy inny przykład, w którym kierowca próbuje dotrzeć na duży obszar, na którym znajduje się wiele lokalizacji, punktów POI lub potencjalnych miejsc docelowych. Kierowca wyjeżdża ze stadionu Wembley w Wielkiej Brytanii (51.557263604707224, -0.2794575145680608) i próbuje dotrzeć do terminalu 5 na lotnisku Heathrow w Londynie.

Nowy interfejs Places API do autouzupełniania ma tę zaletę, że umożliwia zdefiniowanie podstawowego typu jako kryterium wyszukiwania w połączeniu z interfejsem API przewidującym lokale jako potencjalne wyniki wyszukiwania. W tym przypadku oznacza to, że wyszukiwanie lotniska spowoduje również wyświetlenie terminali. Pełną listę typów do uwzględnienia lub wykluczenia znajdziesz w dokumentacji.

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

Powyższe zapytanie zwraca listę terminali i poszczególnych punktów dostawy w tych terminalach. Na liście wyników znajduje się „London Heathrow Airport Terminal 5” i identyfikator miejsca:

"place_id" : "ChIJo21hnPxxdkgRksRL0KQRWII",

Za pomocą parametru „placeId” możemy poinformować interfejs Routes API, że próbujemy 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 w formacie JSON znajdziesz ostatnią część podróży i współrzędne geograficzne (51.4714348, „longitude”: -0.48967890000000003) końcowych lokalizacji.

Terminal 5 Street View

Podsumowanie przykładu 2

Podobnie jak w poprzednim przykładzie, wysiłek programistów w celu zapewnienia kierowcy lepszych wskazówek jest bardzo mały, a można zmierzyć korzyści w postaci zaoszczędzonego czasu. Wykonaliśmy te prośby:

  • Zapytanie do interfejsu Places API dotyczące autouzupełniania (nowe) służące do znajdowania terminalu 5 na lotnisku Heathrow
  • Żądanie do interfejsu Routes API służące do uzyskania trasy z Wembley do terminalu 5

Ten przykład to tylko wierzchołek góry lodowej, jeśli chodzi o nowe funkcje interfejsu Places API. Zapoznaj się z nowymi typami miejsc, takimi jak pas startowy i lotnisko międzynarodowe.

Podsumowanie

Jak widzisz, wysiłek programistyczny wymagany do zapewnienia usługi premium dla klientów podróżujących samochodem jest raczej niewielki, a Ty możesz pokazać, że bierzesz pod uwagę potrzeby klientów.

Do celów programistycznych możesz używać wielu bibliotek i narzędzi, które pomogą Ci tworzyć usługi dla klientów. Zapoznaj się z naszym publicznym repozytorium GitHub na potrzeby Google Maps Platform.

Dalsze działania

Pierwsze kroki z GMP : https://developers.google.com/maps/get-started

Sugerowane dalsze materiały do czytania

Dokumentacja autouzupełniania interfejsu Places API (nowy): 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