Sdílet prostřednictvím


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

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.

Points – element

Rozbalením elementu point zobrazíte seznam souřadnic pro cestu:

Rozbalený prvek bodů

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.

Typ pokynů

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.

Turn by turn instructions

Souhrnné pokyny

Žá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.

Nákladní vůz s třídou 1 hazwaste

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.

Nákladní vůz s třídou 9 hazwaste

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&sectionType=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.

Oddíly provozu

Tuto možnost můžete použít k obarvení oddílů při vykreslování mapy, jako na následujícím obrázku:

Snímek obrazovky znázorňující barevné oddíly vykreslené na mapě

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.

Neoptimalizovat odpověď

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.

Snímek obrazovky znázorňující mapu s neoptimalovanou trasou

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.

Optimalizovaná odpověď

Následující obrázek znázorňuje cestu vyplývající z tohoto dotazu.

Snímek obrazovky znázorňující mapu s optimalizovanou trasou

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í:

  1. Výpočet trasy tak, jak je, a získání cesty z odpovědi na trasu
  2. 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.
  3. Pořadí umístění podle vzdálenosti od začátku trasy
  4. 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.

Snímek obrazovky znázorňující mapu s alternativní trasou

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: