Określ lokalizacje na trasie

Aby obliczyć trasę, musisz określić co najmniej lokalizacje punktu początkowego i docelowego. Te lokalizacje określasz jako punkty pośrednie na trasie.

Oprócz punktu początkowego i docelowego możesz określić różne typy punktów pośrednich oraz sposób ich obsługi na trasie. Więcej informacji i przykładów znajdziesz w tych tematach:

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:

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 dla punktu początkowego i identyfikatora miejsca dla punktu docelowego.

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ą korzyści związane z geokodowaniem, takie jak punkty dostępu i zmienna natężenia 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.

Pobieraj identyfikatory miejsc z interfejsów Geocoding APIPlaces API (w tym z 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), używając współrzędnych geograficznych.

Na przykład określ punkt drogi na trasie origindestination za pomocą współrzędnych latitudelongitude:

{
  "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ę obliczoną 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 liczby 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 kodu obszaru i 6-znakowego lub dłuższego 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 kodu lokalnego o długości co najmniej 6 znaków w połączeniu z dokładną lokalizacją.

    Na przykład adres „450 Serra Mall, Stanford, CA 94305, USA” ma kod lokalny „CRHJ+C3”. W przypadku adresu złożonego połącz kod lokalny z nazwą miasta, stanem, kodem pocztowym i krajem, tworząc adres w formie „CRHJ+C3 Stanford, CA 94305, USA”.

    Na przykład oblicz trasę, podając punkt kontrolny dla trasy origin i destination 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 Directionsinterfejs 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.