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
Um die Merkmale eines Datasets zu gestalten, wenden Sie eine Stilfunktion auf die Dataset-Featureebene einer Karte. Die Elementebene des Datasets wird erstellt, wenn Sie Ein Dataset mit einem Kartenstil verknüpfen.
So verknüpfen Sie das 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 Abschnitt 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
FeatureLayer.StyleFactory
. Diese Funktion definiert die Stillogik für ein Dataset.Anruf
FeatureLayer.setFeatureStyle()
um die Stilfabrik-Funktion auf jedes Element im Dataset anzuwenden.
Stil-Factory-Funktion erstellen
Die Stilfabrik wird auf jedes Element im Dataset angewendet
zu dem Zeitpunkt, zu dem Sie die Funktion auf der Feature-Ebene festlegen. Diese Funktion muss
FeatureStyle
zurückgeben
-Objekt, das den Stil des Polygons angibt.
Wenn die Stil-Factory null
zurückgibt, wird das entsprechende Element nicht gerendert. Weitere Informationen
Weitere Informationen finden Sie unter Stile aus einer Ebene entfernen.
Das Maps SDK for Android übergibt eine
Feature
-Instanz der Stil-Factory-Funktion. Die Instanz Feature
stellt den
Metadaten des Elements erstellen und so Zugriff auf die Metadaten in der Stilfabrik erhalten.
.
Die Stil-Factory-Funktion sollte immer konsistente Ergebnisse zurückgeben, wenn angewendet. Wenn Sie zum Beispiel eine Reihe von Elementen nach dem Zufallsprinzip einfärben möchten, nicht in der Stilfunktion für Elemente erfolgen, da dies unbeabsichtigte Resultate verursachen.
Da diese Funktion für jedes Element in einer Ebene ausgeführt wird, ist die Optimierung wichtig. Um Auswirkungen auf die Rendering-Zeiten zu vermeiden, rufen Sie
FeatureLayer.setFeatureStyle(null)
, wenn eine Element-Ebene nicht mehr verwendet wird.
Sie können auch FeatureLayer.getDatasetId()
aufrufen, um die ID des Datasets abzurufen.
Strich, Füllung und Punktradius festlegen
Beim Gestalten eines Elements in der Stil-Factory-Funktion können Sie Folgendes festlegen:
Strichfarbe und Deckkraft des Rahmens gemäß Definition im
Color
. Der Standardwert ist transparent (Color.TRANSPARENT
).Strichbreite des Rahmens in Bildschirmpixeln. Der Standardwert liegt bei 2.
Füllfarbe und Deckkraft, wie in den
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 das Definieren eines FeatureLayer.StyleFactory
.
mit der immer ein identisches FeatureStyle
-Objekt erstellt wird,
. Wenden Sie Stiloptionen für Elemente direkt auf eine Elementebene des Datasets an oder verwenden Sie
in Verbindung mit einem FeatureStyleFunction
.
Deklarative Stilregeln verwenden
Sie können Stilregeln deklarativ basierend auf einem Elementattribut festlegen,
und wenden sie auf
das gesamte Dataset an. Du kannst null
über dein
Stilfunktion für Elemente, z. B. wenn eine Teilmenge von Elementen beibehalten werden soll
unsichtbar sind.
Verwenden Sie beispielsweise die Methode DatasetFeature.getDatasetAttributes()
, um eine
Map<String,String>
von Dataset-Attributen für ein Element. Sie können dann
Den Stil des Elements basierend auf seinen Attributen anpassen
In diesem Beispiel wird der Wert von „highlightColor“ bestimmt. Attribut von jedem eines Datasets zur Steuerung des Stils:
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 im Dataset angewendet. Element-Ebene. Mit der Stilfabrik-Funktion wird ein benutzerdefinierter Füll- und Strichstil angewendet. zum Polygon hinzufügen:
Falls Sie dies noch nicht getan haben, folgen Sie den Schritten in Jetzt starten um eine neue Karten-ID und einen neuen Kartenstil zu erstellen. Achten Sie darauf, dass Datasets aktiviert sind. Element-Ebene.
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(); }Stil-Factory-Funktion erstellen und auf Datasets anwenden Element-Ebene.
Im folgenden Beispiel wird dieselbe Füllung und dieselbe Kontur auf alle Elemente angewendet. im Dataset.
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(2F) .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.
Du kannst auch null
aus deiner Stilfabrik zurückgeben, z. B. wenn du
dass ein Teil
der Funktionen unsichtbar bleibt.