Udostępnij za pośrednictwem


Interakcja z mapą (zestaw ANDROID SDK)

W tym artykule pokazano, jak używać menedżera zdarzeń mapowania.

Uwaga

Wycofanie zestawu SDK systemu Android w usłudze Azure Maps

Zestaw SDK natywny usługi Azure Maps dla systemu Android jest teraz przestarzały i zostanie wycofany w dniu 3/31/25. Aby uniknąć przerw w działaniu usługi, przeprowadź migrację do zestawu Web SDK usługi Azure Maps przez 3/31/25. Aby uzyskać więcej informacji, zobacz Przewodnik migracji zestawu SDK systemu Android usługi Azure Maps.

Interakcja z mapą

Mapa zarządza wszystkimi zdarzeniami za pośrednictwem jej events właściwości. W poniższej tabeli wymieniono obsługiwane zdarzenia mapy.

Zdarzenie Format programu obsługi zdarzeń opis
OnCameraIdle ()

Uruchamia się po ostatniej ramki renderowanej przed wprowadzeniem stanu bezczynności mapy:

  • Żadne przejścia aparatu nie są w toku.
  • Załadowano wszystkie aktualnie żądane kafelki.
  • Wszystkie animacje zanikania/przejścia zostały ukończone.

OnCameraMove () Uruchamia się wielokrotnie podczas animowanego przejścia z jednego widoku do drugiego w wyniku interakcji użytkownika lub metod.
OnCameraMoveCanceled () Wystrzeliwuje, gdy żądanie ruchu do kamery zostało anulowane.
OnCameraMoveStarted (int reason) Uruchamia się tuż przed rozpoczęciem przejścia z jednego widoku do innego w wyniku interakcji użytkownika lub metod. reason Argument odbiornika zdarzeń zwraca wartość całkowitą, która zawiera szczegółowe informacje na temat sposobu inicjowania ruchu aparatu. Poniższa lista przedstawia możliwe przyczyny:
  • 1: Gest
  • 2. Animacja dla deweloperów
  • 3. Animacja interfejsu API
OnClick (double lat, double lon): boolean Uruchamia się, gdy mapa jest naciśnięta i zwalniana w tym samym punkcie na mapie. Ta procedura obsługi zdarzeń zwraca wartość logiczną wskazującą, czy zdarzenie powinno być używane lub przekazywane dalej do innych odbiorników zdarzeń.
OnFeatureClick (List<Feature>): boolean Uruchamia się, gdy mapa jest naciśnięta i zwalniana w tym samym punkcie funkcji. Ta procedura obsługi zdarzeń zwraca wartość logiczną wskazującą, czy zdarzenie powinno być używane lub przekazywane dalej do innych odbiorników zdarzeń.
OnLayerAdded (Layer layer) Uruchamia się po dodaniu warstwy do mapy.
OnLayerRemoved (Layer layer) Uruchamia się po usunięciu warstwy z mapy.
OnLoaded () Pożary natychmiast po pobraniu wszystkich niezbędnych zasobów i wystąpił pierwszy wizualnie kompletny renderowanie mapy.
OnLongClick (double lat, double lon): boolean Uruchamia się, gdy mapa jest naciśnięta, przechowywana przez chwilę, a następnie zwalniana w tym samym punkcie na mapie. Ta procedura obsługi zdarzeń zwraca wartość logiczną wskazującą, czy zdarzenie powinno być używane lub przekazywane dalej do innych odbiorników zdarzeń.
OnLongFeatureClick (List<Feature>): boolean Uruchamia się, gdy mapa jest naciśnięta, przechowywana przez chwilę, a następnie zwalniana w tym samym momencie na funkcji. Ta procedura obsługi zdarzeń zwraca wartość logiczną wskazującą, czy zdarzenie powinno być używane lub przekazywane dalej do innych odbiorników zdarzeń.
 OnReady                (AzureMap map)       Uruchamia się po początkowym załadowaniu mapy, zmianie orientacji, minimalnym wymaganym obciążeniu zasobów mapy, a mapa jest gotowa do interakcji programowo. 
OnSourceAdded (Source source) Uruchamia się po dodaniu elementu DataSource lub VectorTileSource do mapy.
OnSourceRemoved (Source source) Uruchamia się, gdy element DataSource lub VectorTileSource zostanie usunięty z mapy.
OnStyleChange () Uruchamia się, gdy styl mapy zostanie załadowany lub zmieniony.

Poniższy kod przedstawia sposób dodawania OnClickzdarzeń , OnFeatureClicki OnCameraMove do mapy.

map.events.add((OnClick) (lat, lon) -> {
    //Map clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
});

map.events.add((OnFeatureClick) (features) -> {
    //Feature clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
});

map.events.add((OnCameraMove) () -> {
    //Map camera moved.
});
map.events.add(OnClick { lat: Double, lon: Double -> 
    //Map clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return false
})

map.events.add(OnFeatureClick { features: List<Feature?>? -> 
    //Feature clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return false
})

map.events.add(OnCameraMove {
    //Map camera moved.
})

Aby uzyskać więcej informacji, zobacz dokumentację Nawigowanie po mapie na temat interakcji ze zdarzeniami mapy i wyzwalania.

Określanie zakresu zdarzeń funkcji do warstwy

Po dodaniu zdarzeń OnFeatureClick lub OnLongFeatureClick do mapy można przekazać wystąpienie warstwy lub identyfikator warstwy jako drugi parametr. Po przekazaniu warstwy zdarzenie zostanie wyzwolone, jeśli wystąpi w tej warstwie. Zdarzenia o zakresie warstw są obsługiwane przez warstwy symboli, bąbelków, linii i wielokątów.

//Create a data source.
DataSource source = new DataSource();
map.sources.add(source);

//Add data to the data source.
source.add(Point.fromLngLat(0, 0));

//Create a layer and add it to the map.
BubbleLayer layer = new BubbleLayer(source);
map.layers.add(layer);

//Add a feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add((OnFeatureClick) (features) -> {
    //One or more features clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
}, layer);

//Add a long feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add((OnLongFeatureClick) (features) -> {
    //One or more features long clicked.

    //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
    return true;
}, layer);
//Create a data source.
val source = DataSource()
map.sources.add(source)

//Add data to the data source.
source.add(Point.fromLngLat(0, 0))

//Create a layer and add it to the map.
val layer = BubbleLayer(source)
map.layers.add(layer)

//Add a feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add(
    OnFeatureClick { features: List<Feature?>? -> 
        //One or more features clicked.

        //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
        return false
    },
    layer
)

//Add a long feature click event to the map and pass the layer ID to limit the event to the specified layer.
map.events.add(
    OnLongFeatureClick { features: List<Feature?>? -> 
         //One or more features long clicked.

        //Return true indicating if event should be consumed and not passed further to other listeners registered afterwards, false otherwise.
        return false
    },
    layer
)

Następne kroki

Zobacz następujące artykuły, aby zapoznać się z pełnymi przykładami kodu: