So wenden Sie Stile für Strich und Füllung auf Begrenzungspolygone in einer Element-Ebene an:
Erstellen Sie eine Stil-Factory-Funktion, die die
FeatureLayer.StyleFactory
. Diese Funktion definiert die Stillogik für eine Element-Ebene.Anruf
FeatureLayer.setFeatureStyle()
um die Stilfabrik-Funktion auf die Element-Ebene anzuwenden.
In der folgenden Beispielkarte wird das Begrenzungspolygon für ein in einer einzelnen Region einer Element-Ebene „Ort“ an.
Stil-Factory-Funktion erstellen
Die Stilfabrik-Funktion wird auf alle Polygone im betroffenen Element 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.
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 zu unbeabsichtigten Ergebnissen führen.
Da diese Funktion für jedes Element in einer Ebene ausgeführt wird, ist die Optimierung wichtig. So vermeiden Sie Auswirkungen auf die Renderingzeit:
Aktivieren Sie nur die Elementebenen, die Sie benötigen.
Rufen Sie
FeatureLayer.setFeatureStyle(null)
auf, wenn eine Element-Ebene nicht mehr verwendet wird.
Strich und Füllung des Polygons festlegen
Beim Gestalten eines Begrenzungspolygons in der Stilfabrik-Funktion können Sie Folgendes festlegen:
Strichfarbe und Deckkraft des Polygonrahmens im ARGB-Farbformat wie in den
Color
. Der Standardwert ist transparent (0x00000000).Strichbreite des Polygonrahmens in Bildschirmpixeln. Der Standardwert ist 2.
Füllfarbe und Deckkraft des Polygons im ARGB-Farbformat wie folgt: definiert durch die
Color
. Der Standardwert ist transparent (0x00000000).
Orts-IDs für die Feature-Ausrichtung suchen
Viele Anwendungen wenden Stile auf ein Element basierend auf dem Standort des Elements an. Für können Sie Stile auf verschiedene Länder, Gebiete oder Regionen. Die Position des Elements wird durch ein Orts-ID.
Mit einer Orts-ID wird ein Ort in der Google Places-Datenbank und in Google eindeutig identifiziert. Karten. So rufen Sie eine Orts-ID ab:
- Places APIs und Geocoding verwenden , um anhand des Namens nach Regionen zu suchen und Orts-IDs für Regionen innerhalb angegebenen Grenzen festzulegen.
- Rufen Sie Daten von Click-Events ab. Dadurch wird das Element für die angeklickte Region zurückgegeben. auf die Orts-ID und die Elementtyp-Kategorie zugreifen können.
Die Abdeckung variiert je nach Region. Weitere Informationen finden Sie unter Abdeckung von Google-Grenzen .
Geografische Namen sind aus vielen Quellen verfügbar, z. B. aus der USGS Board on Geographic Names und die USA Gazetteer Files (Gazetteer Files).
PlaceFeature zum Abrufen einer Orts-ID verwenden
Die PlaceFeature
Klasse ist eine abgeleitete Klasse der Klasse Feature
.
Es repräsentiert ein Ortselement (ein Element mit einer Orts-ID), das folgende Elemente enthält:
Elemente vom Typ ADMINISTRATIVE_AREA_LEVEL_1
, ADMINISTRATIVE_AREA_LEVEL_2
COUNTRY
, LOCALITY
, POSTAL_CODE
und SCHOOL_DISTRICT
.
Wenn die Orts-ID verfügbar ist,
Das Maps SDK for Android übergibt eine Instanz von PlaceFeature
an die Stilfabrik
, damit Sie die Position des Elements bestimmen können.
Beispiel für Style Factory
In diesem Beispiel wird eine Stil-Factory-Funktion auf ein Polygon im Ort
Element-Ebene. Die Stilfabrik bestimmt die Orts-ID des Elements.
mithilfe der Instanz PlaceFeature
. Wenn die Orts-ID für „Hana, Hawaii“ lautet,
Die Funktion wendet einen benutzerdefinierten Füll- und Strichstil auf das Polygon an:
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. Aktivieren Sie auf jeden Fall die Element-Ebene Ort.
Rufen Sie beim Initialisieren der Karte einen Verweis auf die Element-Ebene "Ort" ab.
Java
private FeatureLayer localityLayer;
@Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
// Apply style factory function to LOCALITY layer. styleLocalityLayer(); }Kotlin
private var localityLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
// Apply style factory function to LOCALITY layer. styleLocalityLayer() }Stil-Factory-Funktion erstellen und auf den Ort anwenden Element-Ebene.
Im folgenden Beispiel wird die Funktion nur angewendet, Die ID des Elements ist für Hana, Hawaii ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). Wenn die angegebene Orts-ID nicht für Hana, Hawaii gilt, ist der Stil nicht angewendet.
Java
private void styleLocalityLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
// Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }Kotlin
private fun styleLocalityLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
// Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }
Stile von einer Ebene entfernen
Um Stile von einer Ebene zu entfernen, rufen Sie FeatureLayer.setFeatureStyle(null)
auf.