Auf dieser Seite wird beschrieben, 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
Um die Elemente eines Datasets zu gestalten, wenden Sie eine Stilfunktion auf die Elementebene des Datasets einer Karte an. Der Dataset-Feature-Layer 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. Mit dieser Funktion wird die Logik für die Gestaltung eines Datasets definiert.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 auf der Dataset-Ebene 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 angegebene Feature nicht gerendert. Weitere Informationen finden Sie unter Formatierung aus einer Ebene entfernen.
Das Maps SDK for Android übergibt eine Feature
-Instanz an die Stil-Factory-Funktion. Die Feature
-Instanz stellt die Metadaten des Features dar und ermöglicht Ihnen den Zugriff auf die Metadaten in der Stilfactory-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 Feature-Ebene 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 Stil-Factory-Funktion gestalten, können Sie Folgendes festlegen:
Strichfarbe und ‑deckkraft des Rahmens, wie durch die Klasse
Color
definiert. Der Standardwert ist transparent (Color.TRANSPARENT
).Strichstärke des Rahmens in Bildschirmpixeln. Der Standardwert liegt bei 2.
Füllfarbe und Deckkraft, wie durch die Klasse
Color
definiert. Der Standardwert ist transparent (Color.TRANSPARENT
).Punktradius eines Punkt-Features zwischen 0 und 128 Pixeln.
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 auf Grundlage eines Attributs festlegen und auf das gesamte Dataset 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 ein Map<String,String>
mit Dataset-Attributen für ein Feature zurückzugeben. Anschließend können Sie den Stil des Elements anhand seiner Attribute anpassen.
In diesem Beispiel wird der Wert des Attributs „highlightColor“ für jedes Merkmal eines Datasets bestimmt, 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 Elementebene des Datasets angewendet. Die Stil-Factory-Funktion wendet einen benutzerdefinierten Füll- und Strichstil auf das Polygon an:
Falls noch nicht geschehen, erstellen Sie eine neue Karten-ID und einen neuen Kartenstil. Folgen Sie dazu der Anleitung unter Erste Schritte. Aktivieren Sie auf jeden Fall die Element-Ebene Datasets.
Rufen Sie einen Verweis auf die Elementebene „Datasets“ ab, wenn die Karte initialisiert wird.
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(); }Erstellen Sie eine Stil-Factory-Funktion und wenden Sie sie auf die Dataset-Ebene an.
Im folgenden Beispiel werden alle Elemente im Dataset mit derselben Füllung und Kontur versehen.
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
Wenn Sie Stile von einer Ebene entfernen möchten, rufen Sie FeatureLayer.setFeatureStyle(null)
auf.
Über die Stilfactory können Sie auch null
zurückgeben, z. B. wenn ein Teil der Elemente unsichtbar bleiben soll.