Bir öğe katmanındaki sınır poligonlarına kontur ve dolgu stilleri uygulamak için:
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.Stil oluşturma işlevini özellik katmanına uygulamak için
FeatureLayer.setFeatureStyle()
işlevini çağırın.
Aşağıdaki örnek haritada, bir yerleşim yeri öğe katmanındaki tek bir bölgenin sınır poligonunun vurgulanması gösterilmektedir.
Stil fabrikası işlevi oluşturma
Stil oluşturma işlevi, işlevi özellik katmanında ayarladığınız sırada etkilenen özellik katmanındaki her poligona uygulanır. Bu işlev, poligonun nasıl stilize edileceğ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 bölü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ürelerini etkilememek için:
Yalnızca ihtiyacınız olan özellik katmanlarını etkinleştirin.
Bir özellik katmanı artık kullanılmadığında
FeatureLayer.setFeatureStyle(null)
işlevini ç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çimindeki çokgen kenarlığının kontur rengi ve opaklığı. Varsayılan değer şeffaftır (0x00000000).Poligon kenarlığının ekran pikselleri cinsinden çizgi genişliği. Varsayılan değer 2'dir.
Color
sınıfı tarafından tanımlandığı şekilde, ARGB renk biçimindeki 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 özelliklere stil uygular. Örneğin, farklı ülkelere, bölgelere veya coğrafi bölgelere stil uygulamak isteyebilirsiniz. Özellik konumu bir yer kimliği ile gösterilir.
Yer kimlikleri, Google Places veritabanında ve Google Haritalar'da bir yeri benzersiz şekilde tanımlar. Yer kimliği almak için:
- Places API'leri ve Coğrafi Kodlama'yı kullanarak bölgeleri ada göre arayın ve belirtilen sınırlar içindeki bölgeler için yer kimlikleri alın.
- Tıklama etkinliklerinden veri alma Bu işlev, tıklanan bölgeye karşılık gelen özelliği döndürür. Bu özellik, yer kimliğine ve özellik türü kategorisine erişim sağlar.
Kapsam bölgeye göre değişir. Ayrıntılar için Google sınır kapsamı başlıklı makaleyi inceleyin.
Coğrafi adlar, USGS Board on Geographic Names ve U.S. Gazetteer Files 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 kullanılabilir olduğunda Android için Haritalar SDK'sı, özelliğin konumunu belirleyebilmeniz için PlaceFeature
örneğini stil fabrikası işlevine iletir.
Stil fabrika örneği
Bu örnekte, Locality özellik katmanındaki bir çokgene stil oluşturma işlevi uygulanmaktadır. Stil fabrika işlevi, PlaceFeature
örneğini kullanarak özelliğin yer kimliğini belirler. Yer kimliği Hana, Hawaii'ye aitse işlev, poligona özel bir dolgu ve kontur stili uygular:
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.
Harita başlatıldığında Locality ö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() }Stil fabrikası işlevi oluşturun ve bunu Yerellik ö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'ye ait 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 stil kaldırma
Bir katmandan stili kaldırmak için FeatureLayer.setFeatureStyle(null)
işlevini çağırın.