Auf dieser Seite erfahren Sie, wie Sie einer Karte ein Dataset hinzufügen und Stile anwenden.
Vorbereitung
Bevor Sie fortfahren, sollten Sie eine Karten-ID, einen Kartenstil und eine Dataset-ID haben.
Dataset-ID mit Kartenstil verknüpfen
Wenn Sie die Elemente eines Datensatzes gestalten möchten, wenden Sie eine Stilfunktion auf die Elementebene des Datensatzes einer Karte an. Die Dataset-Featureebene wird erstellt, wenn Sie ein Dataset mit einem Kartenstil verknüpfen.
So verknüpfen Sie Ihr Dataset mit dem Kartenstil:
- Rufen Sie in der Google Cloud Console die Seite Datasets auf.
- Klicken Sie auf den Namen des Datasets. Daraufhin wird die Seite Dataset-Details angezeigt.
- Klicken Sie auf den Tab Vorschau.
- Klicken Sie im Bereich Verknüpfte Kartenstile auf KARTENSTIL HINZUFÜGEN.
- Kreuzen Sie die Kästchen für die zu verknüpfenden Kartenstile an und klicken Sie dann auf SPEICHERN.
Stile auf das Dataset anwenden
So wenden Sie Stile auf ein Dataset an:
Erstellen Sie eine Stil-Factory-Funktion, die die Schnittstelle
FeatureLayer.StyleFactory
implementiert. Diese Funktion definiert die Stillogik für ein Dataset.Rufen Sie
FeatureLayer.setFeatureStyle()
auf, um die Stil-Factory-Funktion auf jedes Element im Dataset anzuwenden.
Stil-Factory-Funktion erstellen
Die Stil-Factory-Funktion wird auf jedes Element in der Datenebene angewendet, wenn Sie die Funktion auf der Elementebene festlegen. Diese Funktion muss ein FeatureStyle
-Objekt zurückgeben, das angibt, wie das Polygon gestaltet werden soll.
Wenn die Stil-Factory null
zurückgibt, wird das entsprechende Element nicht gerendert. Weitere Informationen finden Sie unter Styling aus einer Ebene entfernen.
Das Maps SDK for Android übergibt eine Feature
-Instanz an die Stil-Factory-Funktion. Die Instanz Feature
stellt die Metadaten des Elements dar und bietet Ihnen Zugriff auf die Metadaten in der Stil-Factory-Funktion.
Die Stil-Factory-Funktion sollte immer konsistente Ergebnisse zurückgeben, wenn sie angewendet wird. Wenn Sie z. B. eine Reihe von Elementen nach dem Zufallsprinzip einfärben wollen, sollte die zufällige Farbauswahl nicht in der Stilfunktion für Elemente erfolgen, da dies zu unbeabsichtigten Ergebnissen führen würde.
Da diese Funktion für jedes Element in einer Ebene ausgeführt wird, ist die Optimierung wichtig. Um unnötig lange Renderingzeiten zu vermeiden, rufen Sie FeatureLayer.setFeatureStyle(null)
auf, wenn eine Featureebene nicht mehr verwendet wird.
Sie können auch FeatureLayer.getDatasetId()
aufrufen, um die ID des Datasets abzurufen.
Strich, Füllung und Punktradius festlegen
Wenn Sie ein Element in der Stilfunktion der Style-Fabriken stylen, können Sie Folgendes festlegen:
Strichfarbe und Deckkraft des Rahmens, wie in der Klasse
Color
definiert. Der Standardwert ist transparent (Color.TRANSPARENT
).Die Strichbreite des Rahmens in Bildschirmpixeln. Der Standardwert liegt bei 2.
Füllfarbe und Deckkraft gemäß Definition in der Klasse
Color
. Der Standardwert ist transparent (Color.TRANSPARENT
).Der Punktradius eines Punktelements muss zwischen 0 und 128 Pixeln liegen.
Einfache Stilregeln verwenden
Die einfachste Möglichkeit, Stile für Elemente festzulegen, ist die Definition eines FeatureLayer.StyleFactory
, das unabhängig vom Element immer ein identisches FeatureStyle
-Objekt erstellt. Sie können Stiloptionen für Elemente direkt auf eine Elementebene des Datasets anwenden oder sie in Verbindung mit einer FeatureStyleFunction
verwenden.
Deklarative Stilregeln verwenden
Sie können Stilregeln deklarativ basierend auf einem Feature-Attribut festlegen und auf den gesamten Datensatz anwenden. Über die Stilfunktion für Elemente können Sie auch null
zurückgeben, z. B. wenn ein Teil der Elemente unsichtbar bleiben soll.
Verwenden Sie beispielsweise die Methode DatasetFeature.getDatasetAttributes()
, um einen Map<String,String>
von Dataset-Attributen für ein Element zurückzugeben. Anschließend können Sie das Aussehen der Funktion anhand ihrer Attribute anpassen.
In diesem Beispiel wird der Wert des Attributs „highlightColor“ jedes Elements eines Datensatzes festgelegt, um das Styling zu steuern:
Kotlin
// Get the dataset feature, so we can work with all of its attributes. val datasetFeature: DatasetFeature = feature as DatasetFeature
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. val attributeColor: MutableMap<String, String> = datasetFeature.getDatasetAttributes() when (attributeColor["highlightColor"]) { "Black" -> { ... } "Red" -> { ... } else -> { ... } }
Java
// Get the dataset feature, so we can work with all of its attributes. DatasetFeature datasetFeature = (DatasetFeature) feature;
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. Map<String, String> attributeColor = datasetFeature.getDatasetAttributes(); switch(attributeColor.get("highlightColor")) { case "Black": ... break; case "Red": ... break; default: // Color not defined. ... break; }
Stil auf die Dataset-Featureebene anwenden
In diesem Beispiel wird eine Stil-Factory-Funktion auf ein Polygon in der Dataset-Elementebene angewendet. Mit der Stil-Funktions-Factory wird ein benutzerdefinierter Füllungs- und Strichstil auf das Polygon angewendet:
Falls noch nicht geschehen, erstellen Sie eine neue Karten-ID und einen neuen Kartenstil. Folgen Sie dazu der Anleitung unter Erste Schritte. Achten Sie darauf, dass die Feature-Ebene Datasets aktiviert ist.
Rufen Sie beim Initialisieren der Karte einen Verweis auf die Feature-Ebene „Datasets“ ab.
Kotlin
private var datasetLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the DATASET feature layer. datasetLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build())
// Apply style factory function to DATASET layer. styleDatasetsLayer() }Java
private FeatureLayer datasetLayer;
@Override public void onMapReady(GoogleMap map) { // Get the DATASET feature layer. datasetLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build());
// Apply style factory function to DATASET layer. styleDatasetsLayer(); }Eine Stil-Factory-Funktion erstellen und auf die Element-Ebene "Datasets" anwenden
Im folgenden Beispiel werden dieselbe Füllung und dieselbe Kontur auf alle Elemente im Dataset angewendet.
Kotlin
private fun styleDatasetsLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) {
return@StyleFactory FeatureStyle.Builder() // Define a style with green fill at 50% opacity and // solid green border. .fillColor(0x8000ff00.toInt()) .strokeColor(0xff00ff00.toInt()) .strokeWidth(2F) .build() } return@StyleFactory null }
// Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }Java
private void styleDatasetsLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
return new FeatureStyle.Builder() // Define a style with green fill at 50% opacity and solid green border. .fillColor(0x8000ff00) .strokeColor(0xff00ff00) .strokeWidth(2) .build(); } return null; };
// Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }
Stile von einer Ebene entfernen
Um Stile von einer Ebene zu entfernen, rufen Sie FeatureLayer.setFeatureStyle(null)
auf.
Über die Stilfunktion für Elemente können Sie auch null
zurückgeben, z. B. wenn ein Teil der Elemente unsichtbar bleiben soll.