Functie-informatie weergeven
Notitie
Buitengebruikstelling van Azure Maps Android SDK
De Systeemeigen SDK van Azure Maps voor Android is nu afgeschaft en wordt buiten gebruik gesteld op 3-31-25. Om serviceonderbrekingen te voorkomen, migreert u tegen 3-31-25 naar de Azure Maps-web-SDK. Zie de migratiehandleiding voor De Android SDK voor Azure Maps voor meer informatie.
Ruimtelijke gegevens worden vaak weergegeven met punten, lijnen en veelhoeken. Aan deze gegevens is vaak metagegevensinformatie gekoppeld. Een punt kan bijvoorbeeld de locatie van een restaurant en metagegevens over dat restaurant zijn naam, adres en type eten dat het serveert. Deze metagegevens kunnen worden toegevoegd als eigenschappen van een GeoJSON Feature
. Met de volgende code wordt een eenvoudige puntfunctie gemaakt met een title
eigenschap met de waarde 'Hallo wereld!'
//Create a data source and add it to the map.
DataSource source = new DataSource();
map.sources.add(source);
//Create a point feature.
Feature feature = Feature.fromGeometry(Point.fromLngLat(-122.33, 47.64));
//Add a property to the feature.
feature.addStringProperty("title", "Hello World!");
//Create a point feature, pass in the metadata properties, and add it to the data source.
source.add(feature);
//Create a data source and add it to the map.
val source = DataSource()
map.sources.add(source)
//Create a point feature.
val feature = Feature.fromGeometry(Point.fromLngLat(-122.33, 47.64))
//Add a property to the feature.
feature.addStringProperty("title", "Hello World!")
//Create a point feature, pass in the metadata properties, and add it to the data source.
source.add(feature)
Zie Een gegevensbron maken voor meer informatie over het maken en toevoegen van gegevens aan de kaart.
Wanneer een gebruiker communiceert met een functie op de kaart, kunnen gebeurtenissen worden gebruikt om op deze acties te reageren. Een veelvoorkomend scenario is het weergeven van een bericht dat is gemaakt van de metagegevenseigenschappen van een functie waarmee de gebruiker interactie heeft gehad. De OnFeatureClick
gebeurtenis is de belangrijkste gebeurtenis die wordt gebruikt om te detecteren wanneer de gebruiker op een functie op de kaart heeft getikt. Er is ook een OnLongFeatureClick
evenement. Wanneer de OnFeatureClick
gebeurtenis aan de kaart wordt toegevoegd, kan deze worden beperkt tot één laag door de id van een laag door te geven om deze te beperken. Als er geen laag-id wordt doorgegeven, tikt u op een functie op de kaart, ongeacht in welke laag deze zich bevindt, wordt deze gebeurtenis geactiveerd. Met de volgende code wordt een symboollaag gemaakt om puntgegevens op de kaart weer te geven, waarna een OnFeatureClick
gebeurtenis wordt toegevoegd en beperkt tot deze symboollaag.
//Create a symbol and add it to the map.
SymbolLayer layer = new SymbolLayer(source);
map.layers.add(layer);
//Add a feature click event to the map.
map.events.add((OnFeatureClick) (features) -> {
//Retrieve the title property of the feature as a string.
String msg = features.get(0).getStringProperty("title");
//Do something with the message.
//Return a boolean indicating if event should be consumed or continue bubble up.
return false;
}, layer.getId()); //Limit this event to the symbol layer.
//Create a symbol and add it to the map.
val layer = SymbolLayer(source)
map.layers.add(layer)
//Add a feature click event to the map.
map.events.add(OnFeatureClick { features: List<Feature> ->
//Retrieve the title property of the feature as a string.
val msg = features[0].getStringProperty("title")
//Do something with the message.
//Return a boolean indicating if event should be consumed or continue bubble up.
return false
}, layer.getId()) //Limit this event to the symbol layer.
Een pop-upbericht weergeven
Een pop-upbericht is een van de eenvoudigste manieren om informatie weer te geven aan de gebruiker en is beschikbaar in alle versies van Android. Het biedt geen ondersteuning voor een bepaald type gebruikersinvoer en wordt slechts gedurende een korte periode weergegeven. Als u de gebruiker snel iets wilt laten weten over waarop ze hebben getikt, is een pop-upbericht mogelijk een goede optie. De volgende code laat zien hoe een pop-upbericht kan worden gebruikt met de OnFeatureClick
gebeurtenis.
//Add a feature click event to the map.
map.events.add((OnFeatureClick) (features) -> {
//Retrieve the title property of the feature as a string.
String msg = features.get(0).getStringProperty("title");
//Display a toast message with the title information.
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
//Return a boolean indicating if event should be consumed or continue bubble up.
return false;
}, layer.getId()); //Limit this event to the symbol layer.
//Add a feature click event to the map.
map.events.add(OnFeatureClick { features: List<Feature> ->
//Retrieve the title property of the feature as a string.
val msg = features[0].getStringProperty("title")
//Display a toast message with the title information.
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
//Return a boolean indicating if event should be consumed or continue bubble up.
return false
}, layer.getId()) //Limit this event to the symbol layer.
Naast pop-upberichten zijn er veel andere manieren om de metagegevenseigenschappen van een functie weer te geven, zoals:
- Snackbarwidget -
Snackbars
geeft lichte feedback over een bewerking. Ze tonen een kort bericht onder aan het scherm op mobiel en linksonder op grotere apparaten.Snackbars
worden boven alle andere elementen op het scherm weergegeven en er kan slechts één tegelijk worden weergegeven. - Dialoogvensters : een dialoogvenster is een klein venster waarin de gebruiker wordt gevraagd een beslissing te nemen of aanvullende informatie in te voeren. Een dialoogvenster vult het scherm niet en wordt normaal gesproken gebruikt voor modale gebeurtenissen waarvoor gebruikers een actie moeten ondernemen voordat ze kunnen doorgaan.
- Voeg een fragment toe aan de huidige activiteit.
- Navigeer naar een andere activiteit of weergave.
Een pop-up weergeven
De Android SDK van Azure Maps biedt een Popup
klasse waarmee u eenvoudig elementen voor ui-aantekeningen kunt maken die zijn verankerd aan een positie op de kaart. Voor pop-ups moet u een weergave met een relatieve indeling doorgeven aan de content
optie van de pop-up. Hier volgt een eenvoudig voorbeeld van een indeling waarin donkere tekst boven op een achtergrond wordt weergegeven.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:background="#ffffff"
android:layout_margin="8dp"
android:padding="10dp"
android:layout_height="match_parent">
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:text=""
android:textSize="18dp"
android:textColor="#222"
android:layout_height="wrap_content"
android:width="200dp"/>
</RelativeLayout>
Ervan uitgaande dat de bovenstaande indeling is opgeslagen in een bestand dat wordt aangeroepen popup_text.xml
in de res -> layout
map van een app, wordt met de volgende code een pop-up gemaakt en toegevoegd aan de kaart. Wanneer er op een functie wordt geklikt, wordt de eigenschap weergegeven met behulp van de title
popup_text.xml
indeling, waarbij het onderste midden van de indeling is verankerd aan de opgegeven positie op de kaart.
//Create a popup and add it to the map.
Popup popup = new Popup();
map.popups.add(popup);
map.events.add((OnFeatureClick)(feature) -> {
//Get the first feature and it's properties.
Feature f = feature.get(0);
JsonObject props = f.properties();
//Retrieve the custom layout for the popup.
View customView = LayoutInflater.from(this).inflate(R.layout.popup_text, null);
//Access the text view within the custom view and set the text to the title property of the feature.
TextView tv = customView.findViewById(R.id.message);
tv.setText(props.get("title").getAsString());
//Get the position of the clicked feature.
Position pos = MapMath.getPosition((Point)cluster.geometry());
//Set the options on the popup.
popup.setOptions(
//Set the popups position.
position(pos),
//Set the anchor point of the popup content.
anchor(AnchorType.BOTTOM),
//Set the content of the popup.
content(customView)
//Optionally, hide the close button of the popup.
//, closeButton(false)
//Optionally offset the popup by a specified number of pixels.
//pixelOffset(new Pixel(10, 10))
);
//Open the popup.
popup.open();
//Return a boolean indicating if event should be consumed or continue bubble up.
return false;
});
//Create a popup and add it to the map.
val popup = Popup()
map.popups.add(popup)
map.events.add(OnFeatureClick { feature: List<Feature> ->
//Get the first feature and it's properties.
val f = feature[0]
val props = f.properties()
//Retrieve the custom layout for the popup.
val customView: View = LayoutInflater.from(this).inflate(R.layout.popup_text, null)
//Access the text view within the custom view and set the text to the title property of the feature.
val tv: TextView = customView.findViewById(R.id.message)
tv.text = props!!["title"].asString
//Get the position of the clicked feature.
val pos = MapMath.getPosition(f.geometry() as Point?);
//Set the options on the popup.
popup.setOptions(
//Set the popups position.
position(pos),
//Set the anchor point of the popup content.
anchor(AnchorType.BOTTOM),
//Set the content of the popup.
content(customView)
//Optionally, hide the close button of the popup.
//, closeButton(false)
//Optionally offset the popup by a specified number of pixels.
//pixelOffset(Pixel(10, 10))
)
//Open the popup.
popup.open()
//Return a boolean indicating if event should be consumed or continue bubble up.
false
})
In de volgende schermopname worden pop-ups weergegeven wanneer er op functies wordt geklikt en blijven verankerd aan de opgegeven locatie op de kaart terwijl deze wordt verplaatst.
Volgende stappen
Ga als volgende te werk om meer gegevens toe te voegen aan uw kaart: