Begrenzungspolygon gestalten

Plattform auswählen: Android iOS JavaScript

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

  1. Erstellen Sie eine Stil-Factory-Funktion, die die FeatureLayer.StyleFactory . Diese Funktion definiert die Stillogik für eine Element-Ebene.

  2. Anruf FeatureLayer.setFeatureStyle() um die Stilfabrik-Funktion auf die Element-Ebene anzuwenden.

In der folgenden Beispielkarte wird das Begrenzungspolygon für eine einzelne Region in einer Ortsebene hervorgehoben.

Screenshot mit dem Polygon von Hana Hawaii

Stil-Funktion für die Werkseinstellungen 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 der Stil-Factory-Funktion eine Feature-Instanz. Die Instanz Feature stellt den Metadaten des Elements erstellen und so Zugriff auf die Metadaten in der Stilfabrik erhalten. .

Die Stilfunktion sollte immer konsistente Ergebnisse zurückgeben, wenn sie angewendet wird. 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 Featureebene nicht mehr verwendet wird.

Polygonstrich und -füllung festlegen

Beim Gestalten eines Begrenzungspolygons in der Stilfabrik-Funktion können Sie Folgendes festlegen:

  • Strichfarbe und Deckkraft des Polygonrands im ARGB-Farbformat, wie von der Klasse Color definiert. Der Standardwert ist transparent (0x00000000).

  • Strichbreite des Polygonrands 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. So können Sie beispielsweise unterschiedliche 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, 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 stellt eine Ortsfeature (eine Feature mit einer Orts-ID) dar, die Features vom Typ ADMINISTRATIVE_AREA_LEVEL_1, ADMINISTRATIVE_AREA_LEVEL_2, COUNTRY, LOCALITY, POSTAL_CODE und SCHOOL_DISTRICT enthält.

Wenn die Orts-ID verfügbar ist, übergibt das Maps SDK for Android eine Instanz von PlaceFeature an die Style-Factory-Funktion, damit Sie den Standort der Funktion ermitteln können.

Beispiel für eine Style-Factory

In diesem Beispiel wird eine Stil-Funktions-Factory auf ein Polygon in der Orts-Ebene angewendet. Die Stil-Factory-Funktion ermittelt die Orts-ID des Elements anhand der PlaceFeature-Instanz. Wenn die Orts-ID für Hana auf Hawaii steht, wendet die Funktion einen benutzerdefinierten Füllungs- und Strichstil auf das Polygon an:

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

  2. Rufen Sie einen Verweis auf die Element-Ebene „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 Stil-Factory-Funktion und wenden Sie sie auf die Ortsebene an.

    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

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