Begrenzungspolygon gestalten

Plattform auswählen: Android iOS JavaScript

So wenden Sie Stile für Strich und Füllung auf Begrenzungspolygone in einer Elementebene an:

  1. Erstellen Sie eine Stilfabrikfunktion, die die FeatureLayer.StyleFactory Schnittstelle implementiert. Diese Funktion definiert die Stillogik für eine Elementebene.

  2. Rufen Sie FeatureLayer.setFeatureStyle() auf, um die Stilfabrikfunktion auf die Elementebene anzuwenden.

In der folgenden Beispielkarte wird das Begrenzungspolygon für eine einzelne Region in einer Elementebene „Ort“ hervorgehoben.

Screenshot mit dem Polygon für Hana, Hawaii

Stilfabrikfunktion erstellen

Die Stilfabrikfunktion wird auf jedes Polygon in der betroffenen Elementebene angewendet, wenn Sie die Funktion für die Elementebene festlegen. Diese Funktion muss ein FeatureStyle Objekt zurückgeben, das angibt, wie das Polygon gestaltet werden soll.

Das Maps SDK for Android übergibt eine Feature Instanz an die Stilfabrikfunktion. Die Feature-Instanz stellt die Metadaten des Elements dar und ermöglicht Ihnen den Zugriff auf die Metadaten in der Stilfabrikfunktion.

Die Stilfabrikfunktion 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. So vermeiden Sie Auswirkungen auf die Renderingzeit:

  • Aktivieren Sie nur die benötigten Elementebenen.

  • Rufen Sie FeatureLayer.setFeatureStyle(null) auf, wenn eine Elementebene nicht mehr verwendet wird.

Polygonstrich und -füllung festlegen

Beim Gestalten eines Begrenzungspolygons in der Stilfabrikfunktion können Sie Folgendes festlegen:

  • Strichfarbe und -deckkraft des Polygonrands im ARGB-Farbformat, wie durch die Color Klasse definiert. Der Standardwert ist transparent (0x00000000).

  • Strichstärke des Polygonrands in Bildschirmpixeln. Der Standardwert ist 2.

  • Füllfarbe und -deckkraft des Polygons im ARGB-Farbformat, wie durch die Color Klasse definiert. Der Standardwert ist transparent (0x00000000).

Orts-IDs für die Element-Ausrichtung abrufen

Viele Anwendungen wenden Stile auf ein Element basierend auf dem Standort des Elements an. Beispielsweise möchten Sie möglicherweise Stile auf verschiedene Länder, Gebiete oder Regionen anwenden. Der Standort des Elements wird durch eine Orts-ID dargestellt.

Mit einer Orts-ID wird ein Ort in der Google Places-Datenbank und in Google Maps eindeutig identifiziert. So rufen Sie eine Orts-ID ab:

Die Abdeckung variiert je nach Region. Weitere Informationen

Geografische Namen sind aus vielen Quellen verfügbar, etwa vom United States Geological Survey (USGS) Board on Geographic Names, oder aus den US Gazetteer Files.

Mit PlaceFeature eine Orts-ID abrufen

Die PlaceFeature Klasse ist eine Unterklasse der Feature Klasse. Sie stellt ein Orts-Element (ein Element mit einer Orts-ID) dar, einschließlich Elementen vom Typ ADMINISTRATIVE_AREA_LEVEL_1, ADMINISTRATIVE_AREA_LEVEL_2, COUNTRY, LOCALITY, POSTAL_CODE und SCHOOL_DISTRICT.

Wenn die Orts-ID verfügbar ist, übergibt das Maps SDK for Android eine Instanz von PlaceFeature an die Stilfabrikfunktion, damit Sie den Standort des Elements bestimmen können.

Beispiel für eine Stilfabrik

In diesem Beispiel wird eine Stilfabrikfunktion auf ein Polygon in der Elementebene „Ort“ angewendet. Die Stilfabrikfunktion ermittelt die Orts-ID des Elements mithilfe der PlaceFeature-Instanz. Wenn die Orts-ID für Hana, Hawaii, ist, wendet die Funktion einen benutzerdefinierten Stil für Füllung und Strich auf das Polygon an:

  1. 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 Elementebene Ort.

  2. Rufen Sie einen Verweis auf die Elementebene „Ort“ ab, wenn die Karte initialisiert wird.

    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() }

  3. Erstellen Sie eine Stilfabrikfunktion und wenden Sie sie auf die Elementebene „Ort“ an.

    Im folgenden Beispiel wird die Funktion nur angewendet, wenn die Orts-ID des Elements für Hana, Hawaii, ist („ChIJ0zQtYiWsVHkRk8lRoB1RNPo“). Wenn die angegebene Orts-ID nicht für Hana, Hawaii, ist, wird 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

Wenn Sie Stile von einer Ebene entfernen möchten, rufen Sie FeatureLayer.setFeatureStyle(null) auf.