Trasa to ścieżka, po której można się poruszać, między lokalizacją początkową (miejscem wyjazdu) a lokalizacją końcową (miejscem docelowym). Możesz wybrać trasę dla różnych środków transportu, takich jak pieszy, rowerowy lub różne typy pojazdów. Możesz też poprosić o szczegóły trasy, takie jak odległość, szacowany czas podróży, spodziewane opłaty i szczegółowe wskazówki dojazdu.
Aby poprosić o wyznaczenie trasy między 2 lokalizacjami, wywołaj metodę computeRoutes()
. Poniższy przykład pokazuje, jak zdefiniować żądanie, a następnie wywołać funkcję computeRoutes()
, aby uzyskać trasę.
// Import the Routes library. const { Route } = await google.maps.importLibrary('routes'); // Define a computeRoutes request. const request = { origin: 'Mountain View, CA', destination: 'San Francisco, CA', }; // Call the computeRoutes() method to get routes. const {routes} = await Route.computeRoutes(request);
Wybierz pola do zwrócenia
Gdy wysyłasz żądanie trasy, musisz użyć maski pola, aby określić, jakie informacje powinna zwrócić odpowiedź. W masce pola możesz podać nazwy właściwości klasy Route.
Użycie maski pola zapewnia też, że nie prosisz o niepotrzebne dane, co z kolei pomaga zmniejszyć opóźnienie odpowiedzi i uniknąć zwracania informacji, których Twój system nie potrzebuje.
Określ listę potrzebnych pól, ustawiając właściwość ComputeRoutesRequest.fields
, jak pokazano w tym fragmencie kodu:
// Define a routes request. const request = { origin: 'Mountain View, CA', destination: 'San Francisco, CA', fields: ['path'], // Request fields needed to draw polylines. };
Określanie lokalizacji na trasie
Aby obliczyć trasę, musisz podać co najmniej lokalizacje początku i końca trasy oraz maskę pola. Możesz też określić pośrednie punkty na trasie i używać ich do innych czynności, np. dodawania przystanków lub punktów przelotowych.
W sekcji ComputeRoutesRequest
możesz określić lokalizację na jeden z tych sposobów:
- Miejsce (preferowane)
- Współrzędne geograficzne
- Ciąg znaków adresu („Chicago, IL” lub „Darwin, NT, Australia”)
- Plus Code
Lokalizacje wszystkich punktów pośrednich w żądaniu możesz określić w ten sam sposób lub możesz je mieszać. Możesz na przykład użyć współrzędnych geograficznych jako punktu początkowego i obiektu Place jako punktu docelowego.
Aby zwiększyć wydajność i dokładność, używaj obiektów Place zamiast współrzędnych geograficznych lub ciągów znaków adresu. Identyfikatory miejsc są jednoznaczne i zapewniają korzyści związane z geokodowaniem na potrzeby wyznaczania tras, np. punktów dostępu i zmiennych dotyczących ruchu. Pomagają one uniknąć 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 przypisana do najbliższej drogi, która może nie być punktem dostępu do obiektu, a nawet drogą, która szybko lub bezpiecznie prowadzi do celu.
- Aby obliczyć trasę, interfejs Routes API musi najpierw przekształcić ciągi adresów na współrzędne szerokości i długości geograficznej. Ta konwersja może wpłynąć na skuteczność.
Określ lokalizację jako obiekt Place (zalecane)
Aby określić lokalizację za pomocą miejsca, utwórz nową instancję Place
. Ten fragment kodu pokazuje tworzenie nowych instancji Place
dla origin
i destination
, a następnie używanie ich w ComputeRoutesRequest
:
// Create a new Place for the origin. const originPlace = new Place({ id: 'ChIJiQHsW0m3j4ARm69rRkrUF3w', // Mountain View, CA }); // Create a new Place for the destination. const destinationPlace = new Place({ id: 'ChIJIQBpAG2ahYAR_6128GcTUEo', // San Francisco, CA }); // Define a computeRoutes request. const request = { origin: originPlace, destination: destinationPlace, fields: ['path'], };
Współrzędne geograficzne szerokości i długości
Aby określić lokalizację za pomocą współrzędnych geograficznych, utwórz nową instancję google.maps.LatLngLiteral
, google.maps.LatLngAltitude
lub google.maps.LatLngAltitudeLiteral
. Poniższy fragment kodu pokazuje tworzenie nowych instancji google.maps.LatLngLiteral
dla origin
i destination
, a następnie używanie ich w computeRoutesRequest
:
// Create new LatLngLiteral objects for the origin and destination. // Mountain View, CA const originLatLng = {lat: 37.422000, lng: -122.084058}; // San Francisco, CA const destinationLatLng = {lat: 37.774929, lng: -122.419415}; // Define a computeRoutes request. const request = { origin: originLatLng, destination: destinationLatLng, fields: ['path'], };
Ciąg tekstowy adresu
Ciągi znaków adresu to dosłowne adresy reprezentowane przez ciąg znaków (np. „1600 Amphitheatre Parkway, Mountain View, CA”). Geokodowanie to proces przekształcania 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 pośredniego, biblioteka Routes wewnętrznie geokoduje ten ciąg znaków, aby przekonwertować go na współrzędne geograficzne.
Poniższy fragment kodu pokazuje tworzenie obiektu ComputeRoutesRequest
z ciągiem znaków adresu dla origin
i destination
:
// Define a computeRoutes request. const request = { origin: '1600 Amphitheatre Parkway, Mountain View, CA', destination: '345 Spear Street, San Francisco, CA', fields: ['path'], };
Ustawianie regionu adresu
Jeśli jako lokalizację punktu pośredniego podasz niepełny ciąg znaków adresu, interfejs API może użyć nieprawidłowych współrzędnych szerokości i długości geograficznej. Na przykład wysyłasz żądanie, w którym jako miejsce docelowe trasy samochodowej podajesz „Toledo”, a jako miejsce docelowe „Madryt”:
// Define a request with an incomplete address string. const request = { origin: 'Toledo', destination: 'Madrid', };
W tym przykładzie „Toledo” jest interpretowane jako miasto w stanie Ohio w Stanach Zjednoczonych, a nie w Hiszpanii. Dlatego żą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, dodając parametr regionCode. Ten parametr określa kod regionu jako dwuznakową wartość ccTLD („domena najwyższego poziomu”). Większość kodów ccTLD jest identyczna z kodami ISO 3166-1, z kilkoma istotnymi wyjątkami. Na przykład krajowa domena najwyższego poziomu Zjednoczonego Królestwa to „uk” (.co.uk), a kod ISO 3166-1 to „gb” (technicznie dla podmiotu „Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej”).
Żądanie wskazówek dojazdu z „Toledo” do „Madrid” zawierające parametr regionCode zwraca odpowiednie wyniki, ponieważ „Toledo” jest interpretowane jako miasto w Hiszpanii:
const request = { origin: 'Toledo', destination: 'Madrid', region: 'es', // Specify the region code for Spain. };
Plus Code
Wiele osób nie ma dokładnego adresu, co może utrudniać im odbiór przesyłek. Osoby z adresem mogą też woleć odbierać przesyłki w bardziej konkretnych lokalizacjach, np. przy tylnym wejściu lub na rampie załadunkowej.
Kody Plus Code działają jak adresy dla osób lub miejsc, które nie mają rzeczywistego adresu. Kody plus nie zawierają nazw ulic ani numerów budynków, ale opierają się na współrzędnych określających szerokość i długość geograficzną. Wyświetlane są w postaci cyfr i liter.
Google opracowało kody Plus Code, aby każdy mógł korzystać z zalet adresów. Kod plus to zakodowany odniesienie do lokalizacji, które jest wyznaczane na podstawie współrzędnych geograficznych (długości i szerokości) i reprezentuje obszar o wielkości 1/8000 stopnia na 1/8000 stopnia (około 14 m x 14 m na równiku) lub mniejszy. Kodów Plus Code możesz używać zamiast adresów w miejscach, w których nie istnieją lub w których budynki nie mają numerów, a ulice nie mają nazw.
Kody Plus Code muszą być sformatowane jako kod globalny lub kod 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 dla 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 lokalnego kodu o długości co najmniej 6 znaków połączonego z określoną 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 miastem, stanem, kodem pocztowym i krajem w formacie „CRHJ+C3 Stanford, CA 94305, USA”.
Poniższy fragment kodu pokazuje obliczanie trasy przez określenie punktu pośredniego dla miejsca wylotu i miejsca docelowego za pomocą kodów Plus Code:
const request = { origin: '849VCWC8+R9', // Mountain View, CA destination: 'CRHJ+C3 Stanford, CA 94305, USA', // Stanford, CA fields: ['path'], };