Sınır poligonunun stilini ayarlama

Platform seçin: Android iOS JavaScript

Özellik katmanındaki sınır poligonlarına çizgi ve dolgu uygulamak için:

  1. Stil fabrikası işlevini oluşturarak FeatureLayer.StyleFactory kullanır. Bu işlev, özellik katmanının stil mantığını tanımlar.

  2. Stil fabrikası işlevini özellik katmanına uygulamak için FeatureLayer.setFeatureStyle() işlevini çağırın.

Aşağıdaki örnek haritada, bir alan için sınır poligonunun tek bir bölgeyi birleştirir.

Hana Hawaii poligonunu gösteren ekran görüntüsü.

Stil fabrikası işlevi oluşturma

Stil fabrikası işlevi, işlevi özellik katmanında ayarladığınız sırada etkilenen özellik katmanındaki her poligona uygulanır. Bu işlev, FeatureStyle değeri döndür poligonun stilinin nasıl değiştirileceğini belirten bir nesnedir.

Android için Haritalar SDK'sı, stil fabrikası işlevine bir Feature örneği iletir. Feature örneği, özelliğin meta verilerini temsil eder ve stil fabrikası işlevindeki meta verilere erişmenizi sağlar.

Stil fabrikası işlevi aşağıdaki durumlarda her zaman tutarlı sonuçlar döndürmelidir: geçerlidir. Örneğin, bir özellik grubunu rastgele renklendirmek isterseniz, özellik stili işlevinde rastgele kısım yer almamalıdır, istenmeyen sonuçlara yol açabilir.

Bu işlev, bir katmandaki her özellik üzerinde çalıştığından optimizasyon önemlidir. Oluşturma sürelerini etkilememek için:

  • Yalnızca ihtiyacınız olan özellik katmanlarını etkinleştirin.

  • Özellik katmanı kullanımdan kaldırıldığında FeatureLayer.setFeatureStyle(null) komutunu çağır kullanım durumu.

Poligon çizgisini ve doldurma rengini ayarlama

Stil fabrikası işlevinde bir sınır poligonuna stil uygularken şunları ayarlayabilirsiniz:

  • Color sınıfı tarafından tanımlandığı şekilde, poligon kenarlığının ARGB renk biçimindeki çizgi rengi ve opaklığı. Varsayılan değer şeffaftır (0x00000000).

  • Poligon kenarlığının ekran pikseli cinsinden çizgi genişliği. Varsayılan değer 2'dir.

  • Color sınıfı tarafından tanımlandığı şekilde, poligonun ARGB renk biçimindeki dolgu rengi ve şeffaflığı. Varsayılan değer şeffaftır (0x00000000).

Özellikleri hedeflemek için yer kimlikleri arayın

Birçok uygulama, bir özelliğe özelliğin konumuna bağlı olarak stiller uygular. Örneğin, farklı ülkelere, bölgelere veya bölgelere stil uygulamak isteyebilirsiniz. Özellik konumu bir yer kimliği ile temsil edilir.

Yer kimlikleri, Google Rehber veritabanında ve Google'da bir yeri benzersiz şekilde tanımlar Haritalar. Yer kimliği almak için:

Kapsam bölgeye göre değişir. Ayrıntılar için Google sınırları kapsamı başlıklı makaleyi inceleyin.

Coğrafi adlar, USGS Coğrafi Adlar Kurulu ve ABD Yer Adları Dosyaları gibi birçok kaynaktan edinilebilir.

Yer kimliği almak için PlaceFeature'i kullanma

PlaceFeature sınıfı, Feature sınıfının bir alt sınıfıdır. ADMINISTRATIVE_AREA_LEVEL_1, ADMINISTRATIVE_AREA_LEVEL_2, COUNTRY, LOCALITY, POSTAL_CODE ve SCHOOL_DISTRICT türündeki özellikleri içeren bir yer özelliğini (yer kimliği olan bir özellik) temsil eder.

Yer kimliği mevcut olduğunda, Android için Haritalar SDK'sı, stil fabrikasına PlaceFeature örneği iletir işlevi görebilirsiniz.

Stil fabrikası örneği

Bu örnek, Şehirdeki bir poligona stil fabrikası işlevi uygular özellik katmanıdır. Stil fabrikası işlevi, özelliğin yer kimliğini belirler (PlaceFeature) oluşturabilirsiniz. Yer kimliği Hana, Hawaii içinse işlev, poligona özel bir dolgu ve fırça stili uygular:

  1. Henüz yapmadıysanız Başlarken yeni bir harita kimliği ve harita stili oluşturun. Yerleşim özellik katmanını etkinleştirdiğinizden emin olun.

  2. Harita başlatılırken Mahalle özellik katmanına referans alın.

    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. Stil fabrikası işlevi oluşturun ve bunu Mahalle özellik katmanına uygulayın.

    Aşağıdaki örnekte işlev yalnızca özelliğin yer kimliği Hana, Hawaii ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo") ise geçerlidir. Belirtilen yer kimliği Hawaii, Hana için değilse stil uygulanmaz.

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

Katmandan stili kaldırma

Bir katmandan stili kaldırmak için FeatureLayer.setFeatureStyle(null) komutunu çağırın.