Untuk menerapkan gaya goresan dan isian ke poligon batas di lapisan fitur:
Buat fungsi factory gaya yang mengimplementasikan
FeatureLayer.StyleFactory
dalam antarmuka berbasis web yang sederhana. Fungsi ini menentukan logika gaya untuk lapisan fitur.Panggil
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.
Membuat fungsi factory gaya
Fungsi factory gaya diterapkan ke setiap poligon di lapisan fitur yang terpengaruh saat Anda menetapkan fungsi di lapisan fitur. Fungsi ini harus menampilkan objek FeatureStyle
yang menentukan 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.
Panggil
FeatureLayer.setFeatureStyle(null)
saat lapisan fitur tidak lagi digunakan.
Menyetel goresan dan isian poligon
Saat menata gaya poligon batas dalam fungsi factory gaya, Anda dapat menetapkan:
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 pada fitur berdasarkan lokasi fitur. Sebagai Anda mungkin ingin menerapkan gaya ke berbagai negara, wilayah, atau region. Lokasi fitur direpresentasikan oleh ID tempat.
ID tempat secara unik mengidentifikasi tempat di database Google Places dan Google Google Maps. Untuk mendapatkan ID tempat:
- Gunakan Places API dan Geocoding untuk menelusuri wilayah berdasarkan nama, dan dapatkan ID tempat untuk wilayah dalam batas yang ditentukan.
- Dapatkan data dari peristiwa klik. Ini akan mengembalikan Fitur yang sesuai dengan wilayah yang diklik, yang memberikan akses ke ID tempat dan kategori jenis fiturnya.
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
.
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 lapisan fitur Locality. Fungsi factory gaya menentukan ID tempat fitur
menggunakan instance PlaceFeature
. Jika ID tempat adalah untuk Hana, Hawaii, fungsi ini akan menerapkan gaya isian dan goresan kustom ke poligon:
Jika Anda belum melakukannya, ikuti langkah-langkah di bagian Memulai untuk membuat gaya peta dan ID peta baru. Pastikan untuk mengaktifkan lapisan fitur Lokalitas.
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() }Membuat fungsi factory gaya dan menerapkannya ke Lokalitas lapisan fitur.
Contoh berikut hanya menerapkan fungsi jika ID tempat 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)
.