Najlepsze rozwiązania dotyczące usługi Azure Mapy Route Service

Interfejsy API tras i macierzy tras w usłudze Azure Mapy Route Service mogą służyć do obliczania szacowanych czasów przylotu (ETA) dla każdej żądanej trasy. Interfejsy API tras uwzględniają czynniki, takie jak informacje o ruchu w czasie rzeczywistym i historyczne dane ruchu, takie jak typowe prędkości drogowe w żądanej dacie i godzinie. Interfejsy API zwracają najkrótsze lub najszybsze trasy dostępne dla wielu miejsc docelowych w sekwencji lub w zoptymalizowanej kolejności na podstawie czasu lub odległości. Użytkownicy mogą również zażądać wyspecjalizowanych tras i szczegółów dla spacerowiczów, rowerzystów i pojazdów komercyjnych, takich jak ciężarówki. W tym artykule omówiono najlepsze rozwiązania dotyczące wywoływania usługi Azure Mapy Route Service, w tym instrukcje:

  • Wybieranie między interfejsami API tras i interfejsem API routingu macierzy
  • Tworzenie żądań dotyczących historycznych i przewidywanych czasów podróży na podstawie historycznych oraz aktualnych danych o ruchu
  • Zażądaj szczegółów trasy, takich jak czas i odległość, dla całej trasy i każdej części trasy
  • Zażądaj trasy dla pojazdu komercyjnego, takiego jak ciężarówka
  • Żądanie informacji o ruchu na trasie, takich jak korki i informacje o opłatach
  • Zażądaj trasy składającej się z co najmniej jednego przystanku (punktów drogi)
  • Zoptymalizuj trasę jednego lub kilku przystanków, aby uzyskać najlepszą kolejność, aby odwiedzić każdy przystanek (punkt drogowy)
  • Optymalizowanie alternatywnych tras przy użyciu punktów pomocniczych. Na przykład oferują alternatywne trasy, które przechodzą stację ładowania pojazdów elektrycznych.
  • Używanie usługi Route Service z zestawem Sdk sieci Web usługi Azure Mapy

Wymagania wstępne

Aby uzyskać więcej informacji na temat pokrycia usługi Route Service, zobacz Pokrycie routingu.

W tym artykule użyto aplikacji Postman do tworzenia wywołań REST, ale możesz wybrać dowolne środowisko deweloperskie interfejsu API.

Wybieranie między trasami i routingiem macierzy

Interfejsy API Route Directions zwracają instrukcje, w tym czas podróży i współrzędne dla ścieżki trasy. Interfejs API macierzy tras umożliwia obliczanie czasu i odległości podróży dla zestawu tras zdefiniowanych przez lokalizacje początkowe i docelowe. Dla każdego danego źródła interfejs API macierzy oblicza koszt (czas podróży i odległość) routingu z tego źródła do każdego miejsca docelowego. Te interfejsy API umożliwiają określenie parametrów, takich jak żądany czas odlotu, czas przylotu i typ pojazdu, taki jak samochód lub ciężarówka. Wszystkie one używają danych ruchu w czasie rzeczywistym lub predykcyjnego odpowiednio do zwracania najbardziej optymalnych tras.

Rozważ wywołanie interfejsów API Route Directions, jeśli twój scenariusz ma:

  • Zażądaj najkrótszej lub najszybszej trasy jazdy między co najmniej dwoma znanymi lokalizacjami, aby uzyskać dokładny czas przybycia pojazdów dostawczych.
  • Zażądaj szczegółowych wskazówek dotyczących tras, w tym geometrii tras, aby wizualizować trasy na mapie
  • Biorąc pod uwagę listę lokalizacji klientów, oblicz najkrótszą możliwą trasę, aby odwiedzić każdą lokalizację klienta i wrócić do źródła. Ten scenariusz jest często znany jako problem z sprzedawców podróżujących. W jednym żądaniu można przekazać maksymalnie 150 punktów drogi (zatrzymań).
  • Wysyłaj partie zapytań do interfejsu API usługi Route Directions Batch przy użyciu tylko jednego wywołania interfejsu API.

Rozważ wywołanie interfejsu API routingu macierzy, jeśli twoim scenariuszem jest:

  • Oblicz czas podróży lub odległość między zestawem źródeł i miejsc docelowych. Na przykład masz 12 kierowców i musisz znaleźć najbliższego dostępnego kierowcy, aby odebrać dostawę żywności z restauracji.
  • Sortuj potencjalne trasy według rzeczywistej odległości lub czasu podróży. Interfejs API macierzy zwraca tylko czasy podróży i odległości dla każdej kombinacji źródła i miejsca docelowego.
  • Dane klastra na podstawie czasu podróży lub odległości. Na przykład firma ma 50 pracowników, znajdź wszystkich pracowników, którzy mieszkają w ciągu 20 minut czasu jazdy od biura.

Poniżej przedstawiono porównanie niektórych możliwości interfejsów API tras i macierzy:

Interfejs API usługi Azure Mapy Maksymalna liczba zapytań w żądaniu Unikaj obszarów Routing ciężarówek i pojazdów elektrycznych Punkty waypoints i optymalizacja salesman podróży Punkty pomocnicze
Uzyskiwanie wskazówek dotyczących tras 1
Po trasach — wskazówki 1
Post Route Directions Batch 700
Macierz po trasach 700

Aby dowiedzieć się więcej na temat możliwości routingu pojazdów elektrycznych, zobacz nasz samouczek dotyczący kierowania pojazdów elektrycznych przy użyciu usługi Azure Notebooks w języku Python.

Żądanie danych historycznych i w czasie rzeczywistym

Domyślnie usługa Route zakłada, że tryb podróży jest samochodem, a czas odlotu jest teraz. Zwraca trasę na podstawie warunków ruchu w czasie rzeczywistym, chyba że żądanie obliczenia trasy określa inaczej. Aparat routingu ustalił ograniczenia ruchu zależne od czasu, takie jak "Lewe zakręty nie są dozwolone między godziną 16:00 a 18:00". Zamknięcia dróg, takie jak prace drogowe, są brane pod uwagę, chyba że w szczególności zażądasz trasy, która ignoruje bieżący ruch na żywo. Aby zignorować bieżący ruch, ustaw wartość traffic na false w żądaniu interfejsu API.

Wartość travelTimeInSeconds obliczenia trasy obejmuje opóźnienie spowodowane ruchem. Jest generowany przy użyciu bieżących i historycznych danych czasu podróży, gdy czas odlotu jest ustawiony na teraz. Jeśli czas odlotu zostanie ustawiony w przyszłości, interfejsy API zwracają przewidywane czasy podróży na podstawie danych historycznych.

Jeśli uwzględnisz parametr computeTravelTimeFor=all w żądaniu, element podsumowania w odpowiedzi zawiera następujące pola, w tym historyczne warunki ruchu:

Element opis
noTrafficTravelTimeInSeconds Szacowany czas podróży obliczony tak, jakby na trasie nie wystąpiły opóźnienia z powodu warunków ruchu, na przykład z powodu przeciążenia
historicTrafficTravelTimeInSeconds Szacowany czas podróży obliczony przy użyciu danych historycznych zależnych od czasu
liveTrafficIncidentsTravelTimeInSeconds Szacowany czas podróży obliczany przy użyciu danych prędkości w czasie rzeczywistym

W następnych sekcjach pokazano, jak wykonywać wywołania interfejsów API tras przy użyciu omówionych parametrów.

Przykładowe zapytanie

W pierwszym przykładzie poniżej godzina odlotu jest ustawiona na przyszłość w momencie pisania.

https://atlas.microsoft.com/route/directions/json?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=1.0&query=51.368752,-0.118332:51.385426,-0.128929&travelMode=car&traffic=true&departAt=2025-03-29T08:00:20&computeTravelTimeFor=all

Odpowiedź zawiera element podsumowania, podobnie jak w poniższym przykładzie. Ponieważ czas odlotu jest ustawiony na przyszłość, wartość trafficDelayInSeconds wynosi zero. Wartość travelTimeInSeconds jest obliczana przy użyciu danych historycznych zależnych od czasu. W tym przypadku wartość travelTimeInSeconds jest równa wartości historicTrafficTravelTimeInSeconds .

"summary": {
    "lengthInMeters": 2131,
    "travelTimeInSeconds": 248,
    "trafficDelayInSeconds": 0,
    "departureTime": "2025-03-29T08:00:20Z",
    "arrivalTime": "2025-03-29T08:04:28Z",
    "noTrafficTravelTimeInSeconds": 225,
    "historicTrafficTravelTimeInSeconds": 248,
    "liveTrafficIncidentsTravelTimeInSeconds": 248
},

Przykładowe zapytanie

W następnym przykładzie mamy żądanie routingu w czasie rzeczywistym, w którym jest teraz czas odlotu. Nie jest jawnie określony w adresie URL, ponieważ jest to wartość domyślna.

https://atlas.microsoft.com/route/directions/json?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=1.0&query=47.6422356,-122.1389797:47.6641142,-122.3011268&travelMode=car&traffic=true&computeTravelTimeFor=all

Odpowiedź zawiera podsumowanie, jak pokazano w poniższym przykładzie. Z powodu przeciążenia wartość trafficDelaysInSeconds jest większa niż zero. Jest również większy niż historycznyTrafficTravelTimeInSeconds.

"summary": {
    "lengthInMeters": 16637, 
    "travelTimeInSeconds": 2905, 
    "trafficDelayInSeconds": 1604, 
    "departureTime": "2020-02-28T01:00:20+00:00",
    "arrivalTime": "2020-02-28T01:48:45+00:00", 
    "noTrafficTravelTimeInSeconds": 872, 
    "historicTrafficTravelTimeInSeconds": 1976, 
    "liveTrafficIncidentsTravelTimeInSeconds": 2905 
},

Szczegóły trasy żądania i nogi

Domyślnie usługa Route Service zwraca tablicę współrzędnych. Odpowiedź zawiera współrzędne tworzące ścieżkę na liście o nazwie points. Odpowiedź na trasę obejmuje również odległość od rozpoczęcia trasy i szacowany czas, który upłynął. Te wartości mogą służyć do obliczania średniej prędkości dla całej trasy.

Na poniższej ilustracji points przedstawiono element .

Element Punktów

Rozwiń element, point aby wyświetlić listę współrzędnych dla ścieżki:

Element rozwiniętych punktów

Interfejsy API Route Directions obsługują różne formaty instrukcji, które mogą być używane przez określenie parametru instructionsType . Aby sformatować instrukcje dotyczące łatwego przetwarzania komputerów, użyj instrukcjiType=coded. Użyj instrukcjiType=tagged , aby wyświetlić instrukcje jako tekst dla użytkownika. Ponadto instrukcje można sformatować jako tekst, w którym niektóre elementy instrukcji są oznaczone, a instrukcja jest przedstawiana ze specjalnym formatowaniem. Aby uzyskać więcej informacji, zobacz listę obsługiwanych typów instrukcji.

Po zażądaniu instrukcji odpowiedź zwraca nowy element o nazwie guidance. Element guidance zawiera dwie informacje: wskazówki turn-by-turn i podsumowane instrukcje.

Typ instrukcji

Element instructions przechowuje wskazówki turn-by-turn dla podróży i instructionGroups zawiera podsumowanie instrukcji. Każde podsumowanie instrukcji obejmuje segment podróży, który może obejmować wiele dróg. Interfejsy API mogą zwracać szczegóły dla sekcji trasy. na przykład zakres współrzędnych korka lub bieżąca prędkość ruchu.

Instrukcje turn by turn

Podsumowane instrukcje

Żądanie trasy dla pojazdu komercyjnego

Interfejsy API routingu platformy Azure Mapy obsługują routing pojazdów komercyjnych obejmujące routing komercyjnych ciężarówek. Interfejsy API uwzględniają określone limity. Na przykład wysokość i waga pojazdu oraz jeśli pojazd przewozi niebezpieczny ładunek. Jeśli na przykład pojazd przewożą łatwopalny, aparat routingu unika niektórych tuneli, które znajdują się w pobliżu obszarów mieszkalnych.

Przykładowe zapytanie

Poniższe przykładowe żądanie wysyła zapytanie dotyczące trasy dla komercyjnej ciężarówki. Ciężarówka przewozi materiał odpadowy klasy 1.

https://atlas.microsoft.com/route/directions/json?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=1.0&vehicleWidth=2&vehicleHeight=2&vehicleCommercial=true&vehicleLoadType=USHazmatClass1&travelMode=truck&instructionsType=text&query=51.368752,-0.118332:41.385426,-0.128929

Interfejs API tras zwraca wskazówki, które mieszczą się w wymiarach ciężarówki i odpadów niebezpiecznych. Instrukcje dotyczące trasy można przeczytać, rozwijając guidance element .

Ciężarówka z klasą 1 hazwaste

Przykładowe zapytanie

Zmiana klasy US Hazmat z powyższego zapytania powoduje inną trasę, aby uwzględnić tę zmianę.

https://atlas.microsoft.com/route/directions/json?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=1.0&vehicleWidth=2&vehicleHeight=2&vehicleCommercial=true&vehicleLoadType=USHazmatClass9&travelMode=truck&instructionsType=text&query=51.368752,-0.118332:41.385426,-0.128929

Następująca odpowiedź dotyczy ciężarówki przewożące materiał niebezpieczny klasy 9, który jest mniej niebezpieczny niż materiał niebezpieczny klasy 1. Po rozwinięciu elementu w guidance celu odczytania wskazówek zwróć uwagę, że wskazówki nie są takie same. Istnieje więcej instrukcji dotyczących tras dla ciężarówki przewożącej materiał niebezpieczny klasy 1.

Ciężarówka z klasą 9 hazwaste

Żądanie informacji o ruchu wzdłuż trasy

Za pomocą interfejsów API usługi Azure Mapy Route Direction deweloperzy mogą żądać szczegółów dla każdego typu sekcji, uwzględniając sectionType parametr w żądaniu. Możesz na przykład zażądać informacji o szybkości dla każdego segmentu korków. Zapoznaj się z listą wartości klucza sectionType, aby dowiedzieć się więcej o różnych szczegółach, które można zażądać.

Przykładowe zapytanie

Następujące zapytanie ustawia wartość sectionType na trafficwartość . Żąda sekcji zawierających informacje o ruchu z Seattle do San Diego.

https://atlas.microsoft.com/route/directions/json?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=1.0&sectionType=traffic&query=47.6062,-122.3321:32.7157,-117.1611

Odpowiedź zawiera sekcje, które są odpowiednie dla ruchu wzdłuż podanych współrzędnych.

Sekcje ruchu

Tej opcji można użyć do kolorowania sekcji podczas renderowania mapy, jak na poniższej ilustracji:

Zrzut ekranu przedstawiający kolorowe sekcje renderowane na mapie.

Obliczanie i optymalizowanie trasy z wieloma przystankami

Usługa Azure Mapy obecnie udostępnia dwie formy optymalizacji tras:

  • Optymalizacje oparte na żądanym typie trasy bez zmieniania kolejności punktów waypoint. Aby uzyskać więcej informacji, zobacz RouteType.

  • Optymalizacja salesman, która zmienia kolejność punktów drogi, aby uzyskać najlepsze zamówienie, aby odwiedzić każdy przystanek

W przypadku routingu obejmującego wiele zatrzymań można określić maksymalnie 150 punktów waypoint w jednym żądaniu trasy. Lokalizacje współrzędnych początkowych i końcowych mogą być takie same, jak w przypadku rundy. Należy jednak podać co najmniej jeden punkt wyjścia, aby wykonać obliczenie trasy. Punkty waypoint można dodawać do zapytania między współrzędnymi źródła i miejsca docelowego.

Jeśli chcesz zoptymalizować najlepszą kolejność, aby odwiedzić podane punkty drogi, musisz określić wartość computeBestOrder=true. Ten scenariusz jest również znany jako problem z optymalizacją sprzedawcy.

Przykładowe zapytanie

Następujące zapytanie żąda ścieżki dla sześciu punktów waypoint z parametrem ustawionym computeBestOrder na false. Jest to również wartość domyślna parametru computeBestOrder .

https://atlas.microsoft.com/route/directions/json?api-version=1.0&subscription-key={Your-Azure-Maps-Subscription-key}&computeBestOrder=false&query=47.606544,-122.336502:47.759892,-122.204821:47.670682,-122.120415:47.480133,-122.213369:47.615556,-122.193689:47.676508,-122.206054:47.495472,-122.360861

Odpowiedź opisuje długość ścieżki do 140 851 metrów i że podróż tą ścieżką zajęłaby 9991 sekund.

Nieoptymalizowana odpowiedź

Na poniższej ilustracji przedstawiono ścieżkę wynikającą z tego zapytania. Ta ścieżka jest jedną z możliwych tras. Nie jest to optymalna ścieżka na podstawie czasu lub odległości.

Zrzut ekranu przedstawiający mapę z nieoptymalizowanym trasą.

Kolejność punktów drogi to: 0, 1, 2, 3, 4, 5 i 6.

Przykładowe zapytanie

Poniższe zapytanie żąda ścieżki dla tych samych sześciu punktów drogi, co w powyższym przykładzie. Tym razem computeBestOrder parametr jest ustawiony na true (optymalizacja sprzedawców podróżujących).

https://atlas.microsoft.com/route/directions/json?api-version=1.0&subscription-key={Your-Azure-Maps-Subscription-key}&computeBestOrder=true&query=47.606544,-122.336502:47.759892,-122.204821:47.670682,-122.120415:47.480133,-122.213369:47.615556,-122.193689:47.676508,-122.206054:47.495472,-122.360861

Odpowiedź opisuje długość ścieżki do 91 814 metrów i że podróż tą ścieżką zajęłaby 7797 sekund. Odległość podróży i czas podróży są w tym miejscu niższe, ponieważ interfejs API zwrócił zoptymalizowaną trasę.

Zoptymalizowana odpowiedź

Na poniższej ilustracji przedstawiono ścieżkę wynikającą z tego zapytania.

Zrzut ekranu przedstawiający mapę ze zoptymalizowaną trasą.

Optymalna trasa ma następującą kolejność punktów: 0, 5, 1, 2, 4, 3 i 6.

Napiwek

Zoptymalizowane informacje o kolejności punktów waypoint z usługi Routing udostępniają zestaw indeksów. Wykluczają one źródło i indeksy docelowe. Aby uwzględnić źródło, należy zwiększać te wartości o 1. Następnie dodaj lokalizację docelową na końcu, aby uzyskać kompletną uporządkowaną listę punktów waypoint.

Obliczanie i stronnicza trasa alternatywna przy użyciu punktów pomocniczych

Mogą wystąpić sytuacje, w których chcesz odtworzyć trasę, aby obliczyć zero lub więcej alternatywnych tras dla trasy referencyjnej. Możesz na przykład wyświetlić klientom alternatywne trasy, które przechodzą do sklepu detalicznego. W takim przypadku należy odchylić lokalizację przy użyciu punktów pomocniczych. Poniżej przedstawiono kroki odchyleń lokalizacji:

  1. Oblicz trasę zgodnie z rzeczywistym stanem i pobierz ścieżkę z odpowiedzi na trasę
  2. Użyj ścieżki trasy, aby znaleźć żądane lokalizacje wzdłuż lub w pobliżu ścieżki trasy. Możesz na przykład użyć żądania punktu orientacyjnego lub wykonać zapytanie dotyczące własnych danych w bazie danych.
  3. Porządkowaj lokalizacje na podstawie odległości od początku trasy
  4. Dodaj te lokalizacje jako punkty pomocnicze w nowym żądaniu trasy do polecenia Post Route Directions. Aby dowiedzieć się więcej na temat punktów pomocniczych, zobacz dokumentację interfejsu API Post Route Directions.

Podczas wywoływania poleceń Post Route Directions można ustawić minimalny czas odchylenia lub ograniczenia odległości wraz z punktami pomocniczymi. Użyj tych parametrów, jeśli chcesz oferować trasy alternatywne, ale chcesz również ograniczyć czas podróży. Gdy te ograniczenia są używane, trasy alternatywne podążają za trasą referencyjną z punktu początkowego dla danego czasu lub odległości. Innymi słowy, inne trasy różnią się od trasy referencyjnej zgodnie z określonymi ograniczeniami.

Na poniższej ilustracji przedstawiono przykład renderowania alternatywnych tras z określonymi limitami odchyleń dla czasu i odległości.

Zrzut ekranu przedstawiający mapę z alternatywną trasą.

Korzystanie z usługi routingu w aplikacji internetowej

Zestaw AZURE Mapy Web SDK udostępnia moduł usługi. Ten moduł jest biblioteką pomocnika, która ułatwia korzystanie z interfejsów API REST usługi Azure Mapy w internecie lub Node.js aplikacji przy użyciu języka JavaScript lub TypeScript. Moduł usługi może służyć do renderowania zwróconych tras na mapie. Moduł automatycznie określa interfejs API do użycia z żądaniami GET i POST.

Uwaga

Wycofanie modułu usługi azure Mapy Web SDK

Moduł usługi azure Mapy Web SDK jest teraz przestarzały i zostanie wycofany w dniu 30.09.26. Aby uniknąć przerw w działaniu usługi, zalecamy migrację do zestawu SDK REST języka JavaScript platformy Azure Mapy do 30.09.26. Aby uzyskać więcej informacji, zobacz JavaScript/TypeScript REST SDK Developers Guide (wersja zapoznawcza).

Następne kroki

Aby dowiedzieć się więcej, zobacz: