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 FeatureLayer.StyleFactory dalam antarmuka berbasis web yang sederhana. Fungsi ini mendefinisikan logika gaya visual 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 Feature ke fungsi factory style. 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.

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

Menetapkan goresan dan isian poligon

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

  • Warna goresan dan opasitas batas poligon dalam format warna ARGB, sebagaimana didefinisikan oleh Color . Nilai defaultnya adalah transparan (0x00000000).

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

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

Mencari ID tempat untuk menarget fitur

Banyak aplikasi menerapkan gaya pada fitur berdasarkan lokasi fitur. Sebagai Anda mungkin ingin menerapkan gaya ke berbagai negara, wilayah, atau region. Lokasi fitur diwakili 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

PlaceFeature adalah subclass dari class Feature. Elemen ini merepresentasikan fitur tempat (fitur dengan ID tempat) yang menyertakan 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 meneruskan instance PlaceFeature ke factory gaya agar Anda dapat menentukan lokasi fitur.

Contoh factory gaya

Contoh ini menerapkan fungsi factory gaya ke poligon di Lokalitas lapisan fitur. Fungsi factory gaya menentukan ID tempat fitur 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 Lokalitas 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. Membuat fungsi factory gaya dan menerapkannya ke Lokalitas lapisan fitur.

    Contoh berikut hanya menerapkan fungsi jika tempat ID fitur adalah untuk Hana, Hawaii ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo"). Jika ID tempat yang ditentukan bukan untuk Hana, Hawaii maka gayanya bukan 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).