Osvědčené postupy pro službu Azure Maps Route
Směry tras a rozhraní API matice tras ve službě Azure Maps Route je možné použít k výpočtu odhadované doby příjezdu (ETA) pro každou požadovanou trasu. Rozhraní API tras berou v úvahu faktory, jako jsou informace o provozu v reálném čase a historická data o provozu, jako jsou typické rychlosti silnic v požadovaném datu a čase. Rozhraní API vrací nejkratší nebo nejrychlejší trasy dostupné pro více cílů v posloupnosti nebo v optimalizovaném pořadí na základě času nebo vzdálenosti. Uživatelé si také mohou vyžádat specializované trasy a podrobnosti pro chodce, cyklisty a komerční vozidla, jako jsou nákladní vozy. Tento článek popisuje osvědčené postupy pro volání služby Azure Maps Route, včetně postupů:
- Volba mezi rozhraními API směrování tras a rozhraním API pro směrování matice
- Vyžádání historických a predikovaných dojezdových časů na základě aktuálních i historických dat o provozu
- Vyžádání podrobností o trase, jako je čas a vzdálenost, pro celou trasu a každou nohu trasy
- Žádost o trasu pro komerční vozidlo, jako je nákladní vůz
- Vyžádání informací o provozu podél trasy, jako jsou zabloky a informace o placené službě
- Žádost o trasu, která se skládá z jedné nebo více zarážek (waypoints)
- Optimalizujte trasu jedné nebo více zastávek, abyste získali nejlepší objednávku pro návštěvu každé zastávky (waypoint).
- Optimalizujte alternativní trasy pomocí podpůrných bodů. Můžete například nabídnout alternativní trasy, které procházejí nabíjecí stanicí pro elektrické vozidlo.
- Použití služby Route se sadou Azure Maps Web SDK
Požadavky
- Účet Azure Maps
- Klíč předplatného
Další informace o pokrytí služby Route naleznete v tématu Pokrytí směrování.
K spuštění ukázek požadavků HTTP uvedených v tomto článku nebo k sestavení volání REST můžete použít libovolné vývojové prostředí rozhraní API, jako je Postman nebo bruno .
Volba mezi směry trasy a směrováním matice
Rozhraní API směrů tras vrací pokyny, včetně doby jízdy a souřadnic pro trasu trasy. Rozhraní API matice směrování umožňuje vypočítat dobu cesty a vzdálenosti pro sadu tras definovaných místy původu a cíle. Pro každý daný zdroj rozhraní API matice vypočítá náklady (doba cesty a vzdálenost) směrování od tohoto původu do každého daného cíle. Tato rozhraní API umožňují zadat parametry, jako je požadovaný čas odletu, čas příjezdu a typ vozidla, například auto nebo nákladní vůz. Všechny používají data o provozu v reálném čase nebo prediktivním provozu, aby vracely nejoptimálnější trasy.
Pokud je vaším scénářem váš scénář, zvažte volání rozhraní API směrů tras:
- Požádejte o nejkratší nebo nejrychlejší trasu jízdy mezi dvěma nebo více známými místy, abyste získali přesný čas příjezdu pro vaše nákladní vozidla.
- Vyžádejte si podrobné pokyny k trasám, včetně geometrie trasy, abyste mohli vizualizovat trasy na mapě.
- Pokud získáte seznam umístění zákazníků, vypočítejte nejkratší možnou trasu pro návštěvu jednotlivých míst zákazníka a vraťte se k původu. Tento scénář se běžně označuje jako problém cestovního prodejce. V jedné žádosti můžete předat až 150 směrových bodů (zarážek).
- Odešle dávky dotazů do rozhraní API služby Batch Route Directions pomocí jediného volání rozhraní API.
Zvažte volání rozhraní API pro směrování matice, pokud je vaším scénářem:
- Výpočet doby trvání cesty nebo vzdálenosti mezi sadou původů a cílů Máte například 12 řidičů a potřebujete najít nejbližšího dostupného řidiče pro vyzvednutí jídla z restaurace.
- Seřaďte potenciální trasy podle jejich skutečné vzdálenosti nebo času. Rozhraní API matice vrátí pouze časy a vzdálenosti pro každou kombinaci původu a cíle.
- Data clusteru založená na době trvání cesty nebo vzdálenosti. Vaše společnost má například 50 zaměstnanců a najde všechny zaměstnance, kteří žijí během 20 minut jízdy od kanceláře.
Tady je porovnání s některými možnostmi směrů tras a maticových rozhraní API:
Azure Maps API | Maximální počet dotazů v požadavku | Vyhněte se oblastem | Nákladní vůz a směrování elektrických vozidel | Optimalizace Waypoints a Traveling Salesman | Podpůrné body |
---|---|---|---|---|---|
Získání navigačních pokynů pro trasu | 0 | ✔ | ✔ | ||
Směry trasy po trase | 0 | ✔ | ✔ | ✔ | ✔ |
Dávka směrů směrování po směrování | 700 | ✔ | ✔ | ||
Matice po směrování | 700 | ✔ |
Další informace o možnostech směrování elektrických vozidel najdete v našem kurzu o směrování elektrických vozidel pomocí Azure Notebooks s Pythonem.
Vyžádání historických dat a dat v reálném čase
Ve výchozím nastavení služba Route předpokládá, že cestovní režim je auto a čas odletu je nyní. Vrátí trasu na základě podmínek provozu v reálném čase, pokud požadavek na výpočet trasy neurčí jinak. Směrovací modul určuje omezení provozu závislá na čase, například levá otočení nejsou povolená od 19:00 do 18:00. Pokud výslovně nepožadujete trasu, která ignoruje aktuální živý provoz, zvažují se u silničních uzavírek, jako jsou silniční práce. Pokud chcete aktuální provoz ignorovat, nastavte traffic
v false
požadavku rozhraní API.
Hodnota travelTimeInSeconds pro výpočet trasy zahrnuje zpoždění kvůli provozu. Generuje se pomocí aktuálních a historických dat o čase cesty, kdy je čas odletu nastavený na tuto chvíli. Pokud je čas odletu nastavený v budoucnu, rozhraní API vrátí předpokládanou dobu jízdy na základě historických dat.
Pokud do požadavku zahrnete parametr computeTravelTimeFor=all , bude v odpovědi souhrnný prvek obsahovat následující pole včetně historických podmínek provozu:
Element (Prvek) | Popis |
---|---|
noTrafficTravelTimeInSeconds | Odhadovaná doba jízdy vypočítaná tak, jako kdyby nedošlo k žádným zpožděním na trase kvůli dopravním podmínkám, například kvůli zahlcení |
historicTrafficTravelTimeInSeconds | Odhadovaná doba trvání vypočítaná pomocí historických dat historického provozu závislého na čase |
liveTrafficIncidentsTravelTimeInSeconds | Odhadovaná doba jízdy vypočítaná pomocí dat o rychlosti v reálném čase |
V dalších částech se dozvíte, jak pomocí probíraných parametrů provádět volání rozhraní API route.
Ukázkový dotaz
V prvním příkladu pod časem odletu je nastavena budoucnost v době psaní.
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
Odpověď obsahuje souhrnný prvek, jako je následující příklad. Vzhledem k tomu, že čas odletu je nastavený na budoucnost, hodnota trafficDelayInSeconds je nula. Hodnota travelTimeInSeconds se vypočítá pomocí historických dat provozu závislých na čase. V tomto případě je tedy hodnota travelTimeInSeconds rovna historické hodnotěTrafficTravelTimeInSeconds .
"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
},
Ukázkový dotaz
V dalším příkladu máme žádost o směrování v reálném čase, kde je čas odletu. Není explicitně určená v adrese URL, protože se jedná o výchozí hodnotu.
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
Odpověď obsahuje souhrn, jak je znázorněno v následujícím příkladu. Kvůli zahlcení je hodnota trafficDelaysInSeconds větší než nula. Je to také větší než historicTrafficTravelTimeInSeconds.
"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
},
Vyžádání podrobností o trase a noze
Ve výchozím nastavení služba Route vrací pole souřadnic. Odpověď obsahuje souřadnice, které tvoří cestu v seznamu s názvem points
. Odpověď na trasu také zahrnuje vzdálenost od začátku trasy a odhadovaný uplynulý čas. Tyto hodnoty lze použít k výpočtu průměrné rychlosti celé trasy.
Následující obrázek znázorňuje points
prvek.
Rozbalením elementu point
zobrazíte seznam souřadnic pro cestu:
Rozhraní API Směr trasy podporují různé formáty instrukcí, které lze použít zadáním parametru instructionsType . Chcete-li formátovat pokyny pro snadné zpracování počítače, použijte instructionsType=coded. Pomocí příkazu instructionsType=tagged zobrazíte pokyny jako text pro uživatele. Pokyny lze také naformátovat jako text, kde jsou označené některé prvky pokynů a instrukce se zobrazí se speciálním formátováním. Další informace najdete v seznamu podporovaných typů instrukcí.
Po vyžádání instrukce vrátí odpověď nový prvek s názvem guidance
. Prvek guidance
obsahuje dva údaje: směry otáčení a souhrnné pokyny.
Prvek instructions
obsahuje navigační pokyny pro jízdu a instructionGroups
obsahuje souhrnné pokyny. Každý souhrn instrukcí zahrnuje segment cesty, který by mohl pokrýt více cest. Rozhraní API můžou vracet podrobnosti o oddílech trasy. například souřadnicový rozsah dopravního zácpy nebo aktuální rychlost provozu.
Žádost o trasu pro komerční vozidlo
Rozhraní API pro směrování služby Azure Maps podporují směrování komerčních vozidel, které pokrývají směrování komerčních nákladních vozů. Rozhraní API zvažují zadaná omezení. Například výška a hmotnost vozidla a pokud vozidlo přepravuje nebezpečné náklady. Pokud například vozidlo nese hořlavé, směrovací motor se vyhne určitým tunelům, které jsou v blízkosti obytných oblastí.
Ukázkový dotaz
Následující ukázkový požadavek se dotazuje na trasu pro komerční nákladní vůz. Nákladní vůz přepravuje nebezpečný odpad třídy 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
Rozhraní API trasy vrátí směry, které se přizpůsobí rozměrům nákladního vozu a nebezpečného odpadu. Pokyny ke směrování si můžete přečíst rozbalením guidance
prvku.
Ukázkový dotaz
Změna třídy US Hazmat z výše uvedeného dotazu vede k jiné trase, aby se tato změna přizpůsobila.
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
Následující odpověď je určena pro nákladní vůz přepravující nebezpečný materiál třídy 9, který je méně nebezpečný než nebezpečný materiál třídy 1. Když prvek rozbalíte guidance
, abyste si přečetli navigační pokyny, všimněte si, že pokyny nejsou stejné. K dispozici jsou další pokyny pro nákladní vůz třídy 1 nebezpečného materiálu.
Vyžádání informací o provozu podél trasy
Pomocí rozhraní API směrování tras Azure Maps můžou vývojáři požádat o podrobnosti o jednotlivých typech oddílů zahrnutím sectionType
parametru do požadavku. Můžete například požádat o informace o rychlosti pro každý segment dopravní zácpy. Informace o různých podrobnostech, které si můžete vyžádat, najdete v seznamu hodnot klíče sectionType.
Ukázkový dotaz
Následující dotaz nastaví sectionType
na traffic
. Požaduje oddíly, které obsahují informace o provozu ze Seattlu 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
Odpověď obsahuje oddíly, které jsou vhodné pro provoz podél daných souřadnic.
Tuto možnost můžete použít k obarvení oddílů při vykreslování mapy, jako na následujícím obrázku:
Výpočet a optimalizace trasy s několika zastávkami
Azure Maps v současné době poskytuje dvě formy optimalizace tras:
Optimalizace založené na požadovaném typu trasy beze změny pořadí směrovacích bodů. Další informace naleznete v tématu RouteType.
Optimalizace prodejce cestovního prodeje, která změní pořadí waypointů, aby získala nejlepší objednávku pro návštěvu každé zastávky
U vícesměrového směrování je možné zadat až 150 směrovacích bodů v rámci jednoho požadavku na trasu. Počáteční a koncová souřadnice můžou být stejná, jako by tomu bylo v případě odezvy. Abyste ale mohli provést výpočet trasy, musíte zadat alespoň jeden další směrný bod. Do dotazu mezi souřadnicemi původu a cíle je možné přidat waypointy.
Pokud chcete optimalizovat nejlepší pořadí pro návštěvu daných směrových bodů, musíte zadat computeBestOrder=true. Tento scénář se také označuje jako problém optimalizace cestovního prodejce.
Ukázkový dotaz
Následující dotaz požaduje cestu pro šest waypointů s parametrem nastaveným computeBestOrder
na false
. Jedná se také o výchozí hodnotu 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
Odpověď popisuje délku cesty o délce 140 851 metrů a že cesta bude trvat 9 991 sekund.
Následující obrázek znázorňuje cestu vyplývající z tohoto dotazu. Tato cesta je jednou z možných tras. Není to optimální cesta na základě času nebo vzdálenosti.
Pořadí směrových bodů trasy je: 0, 1, 2, 3, 4, 5 a 6.
Ukázkový dotaz
Následující dotaz požaduje cestu pro stejných šest směrných bodů, jako je v předchozí ukázce. computeBestOrder
Tentokrát je parametr nastavený na true
(optimalizace cestovního prodejce).
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
Odpověď popisuje délku cesty o délce 91 814 metrů a že cesta bude trvat 7 797 sekund. Vzdálenost a doba trvání cesty jsou tady dole, protože rozhraní API vrátilo optimalizovanou trasu.
Následující obrázek znázorňuje cestu vyplývající z tohoto dotazu.
Optimální trasa má následující pořadí směrových bodů: 0, 5, 1, 2, 4, 3 a 6.
Tip
Optimalizované informace o pořadí směrovacích bodů ze služby Směrování poskytují sadu indexů. Vyloučí původ a cílové indexy. Tyto hodnoty je potřeba zvýšit o 1, aby se zohlednily původní hodnoty. Pak přidejte cíl na konec a získejte úplný seřazený seznam směrných bodů.
Výpočet a předsudky alternativních tras pomocí podpůrných bodů
Můžete mít situace, kdy chcete rekonstruovat trasu pro výpočet nulové nebo více alternativních tras pro referenční trasu. Můžete například zobrazit alternativní trasy zákazníků, které procházejí vaším maloobchodním obchodem. V takovém případě je potřeba předsunout umístění pomocí podpůrných bodů. Tady je postup, jak předsunout umístění:
- Výpočet trasy tak, jak je, a získání cesty z odpovědi na trasu
- Pomocí cesty trasy vyhledejte požadovaná umístění podél cesty trasy nebo blízko ní. Můžete například použít žádost o bod zájmu nebo dotazovat se na vlastní data v databázi.
- Pořadí umístění podle vzdálenosti od začátku trasy
- Přidejte tato umístění jako podpůrné body do nové žádosti o trasu do směrů trasy. Další informace o podpůrných bodech najdete v dokumentaci k rozhraní API směrů tras po trasách.
Při volání směrů po trase můžete nastavit minimální dobu odchylky nebo omezení vzdálenosti spolu s podpůrnými body. Tyto parametry použijte, pokud chcete nabízet alternativní trasy, ale chcete také omezit dobu trvání cesty. Při použití těchto omezení se alternativní trasy řídí referenční trasou z počátečního bodu pro daný čas nebo vzdálenost. Jinými slovy, ostatní trasy se liší od referenční trasy podle daných omezení.
Následující obrázek je příkladem vykreslování alternativních tras se zadanými limity odchylek pro čas a vzdálenost.
Použití služby Směrování ve webové aplikaci
Sada Azure Maps Web SDK poskytuje modul služby. Tento modul je pomocná knihovna, která usnadňuje používání rozhraní REST API služby Azure Maps ve webových nebo Node.js aplikacích pomocí JavaScriptu nebo TypeScriptu. Modul Služby lze použít k vykreslení vrácených tras na mapě. Modul automaticky určuje, které rozhraní API se má použít s požadavky GET a POST.
Poznámka:
Vyřazení modulu webové sady SDK služby Azure Maps
Modul služby Azure Maps Web SDK je teď zastaralý a bude vyřazen z provozu 30. 9. 26. Pokud se chcete vyhnout přerušení služeb, doporučujeme migrovat do sady Azure Maps JavaScript REST SDK do 30. 9. 30. 26. Další informace najdete v tématu JavaScript/TypeScript REST SDK – Příručka pro vývojáře (Preview).
Další kroky
Další informace najdete tady: