Najlepsze rozwiązania dotyczące usługi Azure Maps Route Service
Interfejsy API tras i macierzy tras w usłudze Azure Maps 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 Maps 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 Maps
Wymagania wstępne
Aby uzyskać więcej informacji na temat pokrycia usługi Route Service, zobacz Pokrycie routingu.
Możesz użyć dowolnego środowiska programistycznego interfejsu API, takiego jak Postman lub bruno , aby uruchomić przykłady żądań HTTP pokazane w tym artykule lub utworzyć wywołania REST.
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 jazdy od biura.
Poniżej przedstawiono porównanie niektórych możliwości interfejsów API tras i macierzy:
Azure Maps API | 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 .
Rozwiń element, point
aby wyświetlić listę współrzędnych dla ścieżki:
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.
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.
Żądanie trasy dla pojazdu komercyjnego
Interfejsy API routingu usługi Azure Maps obsługują routing pojazdów komercyjnych, obejmujący 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 .
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.
Żądanie informacji o ruchu wzdłuż trasy
Za pomocą interfejsów API kierunku trasy w usłudze Azure Maps deweloperzy mogą żądać szczegółów dla każdego typu sekcji, dołączają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 traffic
wartość . Żą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§ionType=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.
Tej opcji można użyć do kolorowania sekcji podczas renderowania mapy, jak na poniższej ilustracji:
Obliczanie i optymalizowanie trasy z wieloma przystankami
Usługa Azure Maps 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.
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.
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ę.
Na poniższej ilustracji przedstawiono ścieżkę wynikającą z tego zapytania.
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:
- Oblicz trasę zgodnie z rzeczywistym stanem i pobierz ścieżkę z odpowiedzi na trasę
- 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.
- Porządkowaj lokalizacje na podstawie odległości od początku trasy
- 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.
Korzystanie z usługi routingu w aplikacji internetowej
Zestaw SDK sieci Web usługi Azure Maps udostępnia moduł usługi. Ten moduł jest biblioteką pomocnika, która ułatwia korzystanie z interfejsów API REST usługi Azure Maps w aplikacjach internetowych lub Node.js 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 zestawu Web SDK usługi Azure Maps
Moduł usługi Web SDK usługi Azure Maps 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 usługi Azure Maps 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: