Aby obliczyć macierz tras, musisz określić co najmniej położenie punktu początkowego i docelowego trasy.
Określanie lokalizacji na trasie
Lokalizację reprezentujesz, tworząc obiekt Waypoint (REST) lub Waypoint (gRPC). W definicji punktu kontrolnego możesz określić lokalizację na jeden z tych sposobów:
- Identyfikator miejsca (preferowany)
- Współrzędne szerokości i długości geograficznej
- Ciąg adresu („Kraków, IL” lub „Darwin, NT, Australia”)
- Plus Code
Lokalizacje wszystkich punktów pośrednich w prośbie możesz określić w ten sam sposób lub mieszać te metody. Możesz na przykład użyć współrzędnych geograficznych punktu początkowego i użyć identyfikatora miejsca jako docelowego punktu pośredniego.
Ze względu na wydajność i dokładność zamiast współrzędnych geograficznych lub ciągów adresów używaj identyfikatorów miejsc. Identyfikatory miejsc są jednoznaczne i zapewniają geokodowanie kierowania, np. punkty dostępu i zmienne ruchu. Pomagają one uniknąć tych sytuacji, które mogą wystąpić w przypadku innych sposobów określania lokalizacji:
- Korzystanie ze współrzędnych geograficznych może spowodować, że lokalizacja zostanie przypięta do drogi najbliższej tym współrzędnym. Może to nie być punkt dostępu do obiektu ani droga, która szybko lub bezpiecznie prowadzi do celu.
- Zanim interfejs Routes API będzie mógł obliczyć trasę, musi najpierw zgeokodować ciągi adresów, aby przekonwertować je na współrzędne długości i szerokości geograficznej. Ta konwersja może mieć wpływ na skuteczność.
Określ lokalizację za pomocą identyfikatora miejsca
Możesz użyć identyfikatora miejsca, aby określić lokalizację punktu kontrolnego. Współrzędne długości i szerokości geograficznej są dopasowywane do dróg, dlatego w niektórych przypadkach identyfikator miejsca może przynieść lepsze wyniki.
Pobierz identyfikatory miejsc z interfejsów Geocoding API i Places API (w tym z funkcji autouzupełniania miejsc). Więcej informacji o identyfikatorach miejsc znajdziesz w artykule Omówienie identyfikatorów miejsc.
W tym przykładzie użyto właściwości placeId
do przekazania identyfikatora miejsca zarówno w przypadku origin
, jak i destination
:
{ "origin":{ "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o" }, "destination":{ "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU" }, ... }
Określ lokalizację za pomocą współrzędnych geograficznych
Aby zdefiniować lokalizację w punkcie kontrolnym, podaj lokalizację (REST) lub lokalizację (gRPC), korzystając ze współrzędnych geograficznych.
Na przykład określ punkt drogi na trasie origin
i destination
za pomocą współrzędnych latitude
i longitude
:
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, ... }
Określanie lokalizacji jako ciągu adresu
Adresy w postaci ciągów znaków to dosłowne adresy reprezentowane przez ciąg znaków (np. „1600 Amphitheatre Parkway, Mountain View, CA”). Geokodowanie to proces konwertowania ciągu znaków adresu na współrzędne szerokości i długości geograficznej (np. szerokość geograficzna 37,423021 i długość geograficzna -122,083739).
Gdy przekazujesz ciąg znaków adresu jako lokalizację punktu kontrolnego, interfejs Routes API geokoduje go wewnętrznie, aby przekonwertować na współrzędne szerokości i długości geograficznej.
Na przykład, aby obliczyć trasę, należy określić punkt kontrolny dla trasy origin
i destination
za pomocą ciągów adresów:
{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "450 Serra Mall, Stanford, CA 94305, USA" }, ... }
W tym przykładzie interfejs Routes API geokoduje oba adresy, aby przekonwertować je na współrzędne długości i szerokości geograficznej.
Jeśli wartość adresu jest niejednoznaczna, interfejs Routes API może wywołać wyszukiwanie, aby rozróżnić go od podobnych adresów. Na przykład „1st Street” może być pełną lub częściową wartością dla „1st street NE” lub „1st St SE”. Ten wynik może być inny niż zwrócony przez interfejs Geocoding API. Aby uniknąć nieporozumień, możesz użyć identyfikatorów miejsc.
Ustaw region dla adresu.
Jeśli jako lokalizację punktu kontrolnego podasz niepełny ciąg adresu, interfejs API może użyć nieprawidłowych współrzędnych szerokości/długości geograficznej. Na przykład: wysyłasz żądanie z wyznaczonym miejscem wylotu „Toledo” i miejscem docelowym „Madryt”:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE" }
W tym przykładzie „Toledo” jest interpretowane jako miasto w stanie Ohio w Stanach Zjednoczonych, a nie w Hiszpanii. W związku z tym żądanie zwraca pustą tablicę, co oznacza, że nie ma żadnych tras:
{ [] }
Możesz skonfigurować interfejs API tak, aby zwracał wyniki z uwzględnieniem określonego regionu. W tym celu dodaj parametr regionCode
. Ten parametr określa kod regionu jako kod ccTLD („domena najwyższego poziomu”) o dwóch znakach. Większość kodów ccTLD jest identyczna z kodami ISO 3166-1 z kilkoma wyjątkami. Na przykład ccTLD Wielkiej Brytanii to „uk” (.co.uk), a jej kod ISO 3166-1 to „gb” (technicznie dla podmiotu „Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej”).
Prośba o wskazanie trasy z Toledo do Madrytu z parametrem regionCode
zwraca odpowiednie wyniki, ponieważ „Toledo” jest interpretowane jako miasto w Hiszpanii:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE", "regionCode": "es" }
Odpowiedź zawiera teraz trasę z Toledo w Hiszpanii do Madrytu w Hiszpanii:
{ "routes": [ { "distanceMeters": 75330, "duration": "4137s", ... } ] }
Określanie lokalizacji za pomocą kodu Plus Code
Wiele osób nie ma dokładnego adresu, co może utrudniać im otrzymywanie przesyłek. Osoby, które podają adres, mogą preferować dostawy do konkretnych miejsc, takich jak tylne wejście czy rampy załadowe.
Kody Plus Code działają jak adresy dla osób lub miejsc, które nie mają adresu. Zamiast adresów z nazwami i numerami ulic, kody plus opierają się na współrzędnych szerokości i długości geograficznej oraz są wyświetlane jako cyfry i litery.
Google opracowało kody Plus Code, aby każdy mógł korzystać z adresów. Kod plus to zakodowany identyfikator lokalizacji wyprowadzony z współrzędnych geograficznych, który reprezentuje obszar o wymiarach 1/8000 stopnia na 1/8000 stopnia (około 14 m na 14 m na równiku) lub mniejszy. Kody Plus Code mogą zastępować adresy w miejscach, w których ich nie ma lub w których budynki nie są numerowane, a ulice nie mają nazw.
Kody Plus Code muszą być sformatowane jako kod globalny lub złożony:
- Kod globalny składa się z 4-znakowego numeru kierunkowego i co najmniej 6-znakowego kodu lokalnego.
Na przykład w przypadku adresu „1600 Amphitheatre Parkway, Mountain View, CA” kod globalny to „849V”, a kod lokalny to „CWC8+R9”. Następnie użyj całego 10-znakowego kodu plus, aby określić wartość lokalizacji jako „849VCWC8+R9”.
- Kod złożony składa się z co najmniej 6-znakowego kodu lokalnego połączonego z konkretną lokalizacją.
Na przykład adres „450 Serra Mall, Stanford, CA 94305, USA” zawiera kod lokalny „CRHJ+C3”. W przypadku adresu złożonego połącz kod lokalny z nazwą miasta, stanu, kodem pocztowym i nazwą kraju w formie „CRHJ+C3 Stanford, CA 94305, USA”.
Na przykład oblicz trasę, podając punkt kontrolny dla trasy
origin
idestination
za pomocą kodów plus:{ "origin":{ "address": "849VCWC8+R9" }, "destination":{ "address": "CRHJ+C3 Stanford, CA 94305, USA" }, "travelMode": "DRIVE" }
Kody Plus są obsługiwane w interfejsach API Google Maps Platform, w tym Autouzupełnianie miejsc, Szczegóły miejsca, interfejs API Directions i interfejs Geocoding API. Możesz na przykład użyć interfejsu Geocoding API, aby odwrócić geokodowanie lokalizacji określonej za pomocą współrzędnych szerokości i długości geograficznej, aby określić kod Plus Code tej lokalizacji.