Sınır poligonuna stil uygulama

Platform seçin: Android iOS JavaScript

Bir özellik katmanındaki sınır poligonlarına kontur ve dolgu stilleri uygulamak için:

  1. FeatureLayer.StyleFactory arayüzünü uygulayan bir stil fabrikası işlevi oluşturun. Bu işlev, bir ö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 yerleşim yeri özellik katmanındaki tek bir bölge için sınır poligonunun vurgulanması gösterilmektedir.

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ızda etkilenen özellik katmanındaki her poligon için uygulanır. Bu işlev, poligonun nasıl stillendirileceğini belirten bir FeatureStyle nesnesi döndürmelidir.

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, uygulandığında her zaman tutarlı sonuçlar döndürmelidir. Örneğin, bir dizi özelliği rastgele renklendirmek istiyorsanız rastgele kısım, özellik stili işlevinde yer almamalıdır. Aksi takdirde istenmeyen sonuçlar ortaya çıkabilir.

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

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

  • Bir özellik katmanı artık kullanılmadığında FeatureLayer.setFeatureStyle(null) yöntemini çağırın.

Poligon konturunu ve dolgusunu ayarlama

Stil fabrikası işlevinde bir sınır poligonunu stillendirirken şunları ayarlayabilirsiniz:

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

  • Ekran pikselleri cinsinden poligon sınırının çizgi genişliği. Varsayılan değer 2'dir.

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

Özellikleri hedeflemek için yer kimliklerini arama

Birçok uygulama, özellik konumuna göre bir özelliğe stil uygular. Örneğin, farklı ülkeler, bölgeler veya idari bölgelere stil uygulamak isteyebilirsiniz. Özellik konumu, bir yer kimliği ile temsil edilir.

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

Kapsam bölgeye göre değişir. Ayrıntılar için Google sınır kapsamı bölümüne bakın.

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

Yer kimliği almak için PlaceFeature'ı 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ı, özelliğin konumunu belirleyebilmeniz için stil fabrikası işlevine bir PlaceFeature örneği iletir.

Stil fabrikası örneği

Bu örnekte, Yerleşim Birimi özellik katmanındaki bir poligon için stil fabrikası işlevi uygulanmaktadır. Stil fabrikası işlevi, PlaceFeature örneğini kullanarak özelliğin yer kimliğini belirler. Yer kimliği Hana, Hawaii içinse işlev, poligona özel bir dolgu ve kontur stili uygular:

  1. Henüz yapmadıysanız yeni bir harita kimliği ve harita stili oluşturmak için Başlangıç bölümündeki adımları uygulayın. Yerleşim yeri özellik katmanını etkinleştirdiğinizden emin olun.

  2. Harita başlatıldığında yerleşim yeri ö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. Bir stil fabrikası işlevi oluşturun ve bunu Yerleşim birimi özellik katmanına uygulayın.

    Aşağıdaki örnekte, işlev yalnızca özelliğin yer kimliği Hana, Hawaii ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo") içinse uygulanır. Belirtilen yer kimliği Hana, Hawaii 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) }

Bir katmandan stil kaldırma

Bir katmandan stil kaldırmak için FeatureLayer.setFeatureStyle(null) yöntemini çağırın.