Menata gaya poligon batas

Pilih platform: Android iOS JavaScript

Untuk menerapkan gaya goresan dan mengisi ke poligon batas di lapisan fitur:

  1. Buat fungsi factory gaya yang mengimplementasikan antarmuka FeatureLayer.StyleFactory. Fungsi ini menentukan logika gaya untuk lapisan fitur.

  2. Telepon FeatureLayer.setFeatureStyle() untuk menerapkan fungsi factory gaya ke lapisan fitur.

Peta contoh berikut menunjukkan cara menandai poligon batas untuk satu region di lapisan fitur Lokalitas.

Screenshot yang menampilkan poligon Hana Hawaii.

Membuat fungsi factory gaya

Fungsi factory gaya diterapkan ke setiap poligon dalam fitur yang terpengaruh pada saat Anda menetapkan fungsi di lapisan fitur. Fungsi ini harus menampilkan FeatureStyle yang menetapkan cara menata gaya poligon.

Maps SDK for Android meneruskan instance Feature ke fungsi factory gaya. Instance Feature mewakili metadata fitur, sehingga memberi Anda akses ke metadata di factory gaya fungsi tersebut.

Fungsi factory gaya harus selalu menampilkan hasil yang konsisten saat diterapkan. Misalnya, jika Anda ingin mewarnai serangkaian fitur secara acak, acak seharusnya tidak terjadi di fungsi gaya fitur, karena akan menyebabkan hasil yang tidak diinginkan.

Karena fungsi ini berjalan di setiap fitur dalam lapisan, pengoptimalan harus dilakukan. Agar tidak memengaruhi waktu rendering:

  • Hanya aktifkan lapisan fitur yang Anda perlukan.

  • Panggil FeatureLayer.setFeatureStyle(null) saat lapisan fitur tidak lagi digunakan.

Menetapkan goresan dan isi poligon

Saat menata gaya poligon batas dalam fungsi factory gaya, Anda dapat menyetel:

  • Warna dan opasitas goresan batas poligon dalam format warna ARGB, seperti yang ditentukan oleh class Color. Nilai defaultnya adalah transparan (0x00000000).

  • Lebar goresan batas poligon dalam piksel layar. Nilai default adalah 2.

  • Warna isian dan opasitas poligon dalam format warna ARGB, seperti yang ditentukan oleh class Color. Nilai defaultnya adalah transparan (0x00000000).

Mencari ID tempat untuk menarget fitur

Banyak aplikasi menerapkan gaya ke fitur berdasarkan lokasi fitur. Misalnya, Anda mungkin ingin menerapkan gaya ke berbagai negara, wilayah, atau wilayah. Lokasi fitur direpresentasikan oleh ID tempat.

ID tempat secara unik mengidentifikasi tempat di database Google Places dan Google Google Maps. Untuk mendapatkan ID tempat:

Cakupan bervariasi menurut wilayah. Lihat Cakupan batas Google untuk mengetahui detailnya.

Nama geografis tersedia dari banyak sumber, seperti USGS Board on Geographic Names, dan Amerika Serikat File Gazetteer.

Menggunakan PlaceFeature untuk mendapatkan ID tempat

Class PlaceFeature adalah subclass dari class Feature. Ini mewakili fitur tempat (fitur dengan ID tempat) yang mencakup fitur jenis ADMINISTRATIVE_AREA_LEVEL_1, ADMINISTRATIVE_AREA_LEVEL_2, COUNTRY, LOCALITY, POSTAL_CODE, dan SCHOOL_DISTRICT.

Jika ID tempat tersedia, Maps SDK for Android akan meneruskan instance PlaceFeature ke fungsi factory gaya sehingga Anda dapat menentukan lokasi fitur.

Contoh factory gaya

Contoh ini menerapkan fungsi factory gaya ke poligon di lapisan fitur Locality. Fungsi factory gaya menentukan ID tempat fitur dengan menggunakan instance PlaceFeature. Jika ID tempat adalah untuk Hana, Hawaii maka fungsi menerapkan gaya goresan dan isian khusus ke poligon:

  1. Jika Anda belum melakukannya, ikuti langkah-langkah berikut Memulai untuk membuat gaya peta dan ID peta baru. Pastikan untuk mengaktifkan lapisan fitur Lokalitas.

  2. Dapatkan referensi ke lapisan fitur Locality saat peta melakukan inisialisasi.

    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. Buat fungsi factory gaya dan terapkan ke lapisan fitur Locality.

    Contoh berikut hanya menerapkan fungsi jika tempat ID fitur adalah untuk Hana, Hawaii ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). Jika ID tempat yang ditentukan bukan untuk Hana, Hawaii, gaya tidak akan diterapkan.

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

Menghapus gaya visual dari lapisan

Untuk menghapus gaya visual dari lapisan, panggil FeatureLayer.setFeatureStyle(null).