Zobrazení dat o provozu na mapě (Android SDK)

Data toku a incidenty jsou dva typy dat provozu, které se dají zobrazit na mapě. V této příručce se dozvíte, jak zobrazit oba typy dat provozu. Data incidentů se skládají z dat založených na bodech a spojnicách pro věci, jako jsou konstrukce, uzavření silnic a nehody. Data toku zobrazují metriky o toku provozu na silnici.

Poznámka:

Vyřazení sady Azure Mapy Android SDK

Sada Azure Mapy Native SDK pro Android je teď zastaralá a bude vyřazena 31. 31. 25. Pokud se chcete vyhnout přerušení služeb, proveďte migraci do sady Azure Mapy Web SDK do 31. 31. 25. Další informace najdete v průvodci migrací sady Azure Mapy Android SDK.

Požadavky

Nezapomeňte dokončit kroky v rychlém startu : Vytvoření dokumentu aplikace pro Android. Bloky kódu v tomto článku lze vložit do obslužné rutiny události mapy onReady .

Zobrazit provoz na mapě

V Azure Mapy jsou k dispozici dva typy dat provozu:

  • Data incidentů – tvoří bodová a spojnicová data pro věci, jako jsou konstrukce, uzavření silnic a nehody.

  • Data toku – poskytují metriky o toku provozu na silnicích. Data toku provozu se často používají k obarvení cest. Barvy jsou založené na tom, kolik provozu tok zpomaluje, vzhledem k limitu rychlosti nebo jiné metrice. Existují čtyři hodnoty, které lze předat do možnosti provozu flow mapy.

    Výčet toku Popis
    TrafficFlow.NONE Nezobrazuje data o provozu na mapě
    TrafficFlow.RELATIVE Zobrazuje dopravní data, která jsou relativní vzhledem k rychlosti volného toku cesty.
    TrafficFlow.RELATIVE_DELAY Zobrazí oblasti, které jsou pomalejší než průměrné očekávané zpoždění.
    TrafficFlow.ABSOLUTE Zobrazuje absolutní rychlost všech vozidel na silnici.

Následující kód ukazuje, jak zobrazit data o provozu na mapě.

//Show traffic on the map using the traffic options.
map.setTraffic(
    incidents(true),
    flow(TrafficFlow.RELATIVE)
);
map.setTraffic(
    incidents(true),
    flow(TrafficFlow.RELATIVE)
)

Následující snímek obrazovky ukazuje výše uvedený kód, který vykresluje informace o provozu v reálném čase na mapě.

Mapa zobrazující informace o provozu v reálném čase

Získání podrobností o incidentu provozu

Podrobnosti o incidentu provozu jsou k dispozici ve vlastnostech funkce použité k zobrazení incidentu na mapě. Do mapy se přidávají dopravní incidenty pomocí služby azure Mapy traffic incident vector tile service. Formát dat v těchto vektorových dlaždicích, pokud je zde zdokumentovaný. Následující kód přidá do mapy událost kliknutí a načte funkci incidentu provozu, na kterou jste klikli, a zobrazí zprávu s některými podrobnostmi.

//Show traffic information on the map.
map.setTraffic(
    incidents(true),
    flow(TrafficFlow.RELATIVE)
);

//Add a click event to the map.
map.events.add((OnFeatureClick) (features) -> {

    if (features != null && features.size() > 0) {
        Feature incident = features.get(0);

        //Ensure that the clicked feature is an traffic incident feature.
        if (incident.properties() != null && incident.hasProperty("incidentType")) {

            StringBuilder sb = new StringBuilder();
            String incidentType = incident.getStringProperty("incidentType");

            if (incidentType != null) {
                sb.append(incidentType);
            }

            if (sb.length() > 0) {
                sb.append("\n");
            }

            //If the road is closed, find out where it is closed from.
            if ("Road Closed".equals(incidentType)) {
                String from = incident.getStringProperty("from");

                if (from != null) {
                    sb.append(from);
                }
            } else {
                //Get the description of the traffic incident.
                String description = incident.getStringProperty("description");

                if (description != null) {
                    sb.append(description);
                }
            }

            String message = sb.toString();

            if (message.length() > 0) {
                Toast.makeText(this, message, Toast.LENGTH_LONG).show();
            }
        }
    }
});
//Show traffic information on the map.
map.setTraffic(
    incidents(true),
    flow(TrafficFlow.RELATIVE)
)

//Add a click event to the map.
map.events.add(OnFeatureClick { features: List<Feature>? ->
    if (features != null && features.size > 0) {
        val incident = features[0]

        //Ensure that the clicked feature is an traffic incident feature.
        if (incident.properties() != null && incident.hasProperty("incidentType")) {
            val sb = StringBuilder()
            val incidentType = incident.getStringProperty("incidentType")

            if (incidentType != null) {
                sb.append(incidentType)
            }

            if (sb.length > 0) {
                sb.append("\n")
            }

            //If the road is closed, find out where it is closed from.
            if ("Road Closed" == incidentType) {
                val from = incident.getStringProperty("from")
                if (from != null) {
                    sb.append(from)
                }
            } else { //Get the description of the traffic incident.
                val description = incident.getStringProperty("description")
                if (description != null) {
                    sb.append(description)
                }
            }

            val message = sb.toString()
            if (message.length > 0) {
                Toast.makeText(this, message, Toast.LENGTH_LONG).show()
            }
        }
    }
})

Následující snímek obrazovky znázorňuje výše uvedené informace o provozu v reálném čase na mapě s informační zprávou zobrazující podrobnosti incidentu.

Mapa zobrazující informace o provozu v reálném čase se zprávou informační zprávy zobrazující podrobnosti incidentu

Filtrování incidentů provozu

V typickém dni ve většině velkých měst může docházet k zahlcení počtu incidentů provozu, ale v závislosti na vašem scénáři může být žádoucí filtrovat a zobrazovat podmnožinu těchto incidentů. Při nastavování možností provozu existují incidentCategoryFilter možnosti a incidentMagnitudeFilter možnosti, které v poli kategorií incidentů nebo rozsahu výčtu nebo řetězcových hodnot.

V následující tabulce jsou uvedeny všechny kategorie incidentů provozu, které je možné použít v rámci incidentCategoryFilter této možnosti.

Výčet kategorií Řetězcová hodnota Popis
IncidentCategory.UNKNOWN "unknown" Incident, který buď neodpovídá žádné z definovaných kategorií, nebo ještě nebyl klasifikovaný.
IncidentCategory.ACCIDENT "accident" Dopravní nehoda.
IncidentCategory.FOG "fog" Mlha, která snižuje viditelnost, pravděpodobně snižuje dopravní tok a případně zvyšuje riziko nehody.
IncidentCategory.DANGEROUS_CONDITIONS "dangerousConditions" Nebezpečná situace na silnici, například objekt na silnici.
IncidentCategory.RAIN "rain" Těžký déšť, který může snížit viditelnost, ztížit podmínky jízdy a případně zvýšit riziko nehody.
IncidentCategory.ICE "ice" Icy silniční podmínky, které mohou ztěžovat nebo nebezpečné řízení.
IncidentCategory.JAM "jam" Dopravní zácpa vede k pomalejšímu přesouvání provozu.
IncidentCategory.LANE_CLOSED "laneClosed" Cesta je uzavřená.
IncidentCategory.ROAD_CLOSED "roadClosed" Cesta je uzavřená.
IncidentCategory.ROAD_WORKS "roadWorks" Silniční práce/konstrukce v této oblasti.
IncidentCategory.WIND "wind" Vysoké větry, které mohou ztížit jízdu pro vozidla s velkým bočním profilem nebo vysokým středem závažnosti.
IncidentCategory.FLOODING "flooding" Na silnici dochází k záplavám.
IncidentCategory.DETOUR "detour" Provoz směrovaný na objížďku.
IncidentCategory.CLUSTER "cluster" Cluster incidentů provozu různých kategorií. Přiblížení mapy způsobí, že se cluster rozdělí do jednotlivých incidentů.
IncidentCategory.BROKEN_DOWN_VEHICLE "brokenDownVehicle" Rozbité vozidlo na silnici nebo vedle cesty.

V následující tabulce jsou uvedeny všechny rozsahy incidentů provozu, které je možné použít v rámci incidentMagnitudeFilter této možnosti.

Výčtu velikostí Řetězcová hodnota Popis
IncidentMagnitude.UNKNOWN "unknown" Incident, který ještě nebyl klasifikovaný.
IncidentMagnitude.MINOR "minor" Menší problém s provozem, který je často jen pro informace a má minimální dopad na tok provozu.
IncidentMagnitude.MODERATE "moderate" Střední problém s provozem, který má nějaký vliv na tok provozu.
IncidentMagnitude.MAJOR "major" Hlavní problém s provozem, který má významný dopad na tok provozu.

Následující filtruje dopravní incidenty tak, aby se na mapě zobrazovaly pouze střední dopravní zácpy a incidenty s nebezpečnými podmínkami.

map.setTraffic(
    incidents(true),
    incidentMagnitudeFilter(new String[] { IncidentMagnitude.MODERATE }),
    incidentCategoryFilter(new String[] { IncidentCategory.DANGEROUS_CONDITIONS, IncidentCategory.JAM })              
);
map.setTraffic(
    incidents(true),
    incidentMagnitudeFilter(*arrayOf(IncidentMagnitude.MODERATE)),
    incidentCategoryFilter(
        *arrayOf(
            IncidentCategory.DANGEROUS_CONDITIONS,
            IncidentCategory.JAM
        )
    )
)

Následující snímek obrazovky ukazuje mapu střední dopravní zácpy a incidentů s nebezpečnými podmínkami.

Mapa střední dopravní zácpy a incidentů s nebezpečnými podmínkami

Poznámka:

Některé incidenty provozu můžou mít přiřazených více kategorií. Pokud má incident jakoukoli kategorii, která odpovídá jakékoli předané incidentCategoryFiltermožnosti, zobrazí se. Primární kategorie incidentu se může lišit od kategorií zadaných ve filtru a zobrazit tak jinou ikonu.

Další kroky

V následujících průvodcích se dozvíte, jak do mapy přidat další data: