Özellik katmanındaki sınır poligonlarına çizgi ve dolgu uygulamak için:
Stil fabrikası işlevini oluşturarak
FeatureLayer.StyleFactory
arayüzü. Bu işlev, özellik katmanının stil mantığını tanımlar.Telefonla arama
FeatureLayer.setFeatureStyle()
özellik katmanına stil fabrikası işlevini uygulamak.
Aşağıdaki örnek haritada, bir alan için sınır poligonunun tek bir bölgeyi birleştirir.
Stil fabrika işlevi oluşturma
Stil fabrikası işlevi, etkilenen özellikteki her poligona uygulanır
katmanında kullanabilirsiniz. Bu işlev,
FeatureStyle
değeri döndür
poligonun stilinin nasıl değiştirileceğini belirten bir nesnedir.
Android için Haritalar SDK'sı
Feature
örneğini oluşturalım. Feature
örneği
meta verilere erişmenizi sağlar.
işlevini kullanın.
Stil fabrikası işlevi aşağıdaki durumlarda her zaman tutarlı sonuçlar döndürmelidir: geçerlidir. Örneğin, bir özellik grubunu rastgele renklendirmek isterseniz, özellik stili işlevinde rastgele kısım yer almamalıdır, istenmeyen sonuçlara yol açabilir.
Bu fonksiyon bir katmandaki tüm özelliklerin üzerinden çalıştığı için optimizasyon önemlidir. Oluşturma sürelerini etkilememek için:
Yalnızca ihtiyacınız olan özellik katmanlarını etkinleştirin.
Özellik katmanı kullanımdan kaldırıldığında
FeatureLayer.setFeatureStyle(null)
komutunu çağır kullanım durumu.
Poligon çizgisini ve dolgusunu ayarlama
Stil fabrikası işlevinde bir sınır poligonunun stilini biçimlendirirken şu ayarları yapabilirsiniz:
Poligon kenarlığının ARGB renk biçiminde çizgi rengi ve opaklığı, tarafından tanımlandığı şekilde
Color
sınıfını kullanır. Varsayılan değer şeffaftır (0x00000000).Poligon kenarlığının ekran pikseli cinsinden çizgi genişliği. Varsayılan değer 2'dir.
Poligonun dolgu rengi ve opaklığı ARGB renk biçiminde, tarafından tanımlanan
Color
sınıfını kullanır. Varsayılan değer şeffaftır (0x00000000).
Özellikleri hedeflemek için yer kimlikleri arayın
Birçok uygulama, bir özelliğe özelliğin konumuna bağlı olarak stiller uygular. Örneğin, Örneğin farklı ülkelere, bölgelere veya bölgelerdir. Özelliğin konumu bir yer kimliğini girin.
Yer kimlikleri, Google Rehber veritabanında ve Google'da bir yeri benzersiz şekilde tanımlar Haritalar. Yer kimliği almak için:
- Yer API'lerini ve Coğrafi Kodlamayı Kullanma bölgeleri ada göre aramak ve içindeki bölgeler için yer kimlikleri almak sınırlar.
- Tıklama etkinliklerinden veri alın. Bu komut, tıklanan bölgeye karşılık gelen Özelliği döndürür ve ve özellik türü kategorisine erişimini sağlayabilir.
Kapsam bölgeye göre değişir. Görüntüleyin Google sınır kapsamı inceleyebilirsiniz.
Coğrafi adlar; USGS Board on Coğrafi Adlar, ve ABD Gazete Dosyaları.
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.
Aşağıdakileri içeren bir yer özelliğini (yer kimliğine sahip bir özellik) temsil eder:
ADMINISTRATIVE_AREA_LEVEL_1
, ADMINISTRATIVE_AREA_LEVEL_2
türü özellikler,
COUNTRY
, LOCALITY
, POSTAL_CODE
ve SCHOOL_DISTRICT
.
Yer kimliği mevcut olduğunda,
Android için Haritalar SDK'sı, stil fabrikasına PlaceFeature
örneği iletir
işlevi görebilirsiniz.
Stil fabrikası örneği
Bu örnek, Şehirdeki bir poligona stil fabrikası işlevi uygular
özellik katmanıdır. Stil fabrikası işlevi, özelliğin yer kimliğini belirler
(PlaceFeature
) oluşturabilirsiniz. Yer kimliği Hana, Hawaii içinse
işlev, poligona özel bir dolgu ve fırça stili uygular:
Henüz yapmadıysanız Başlarken yeni bir harita kimliği ve harita stili oluşturun. Konum'u etkinleştirdiğinizden emin olun özellik katmanıdır.
Harita başlatıldığında Konum ö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 fabrika işlevi oluşturma ve bunu Yerel Birime uygulama özellik katmanıdır.
Aşağıdaki örnekte, yalnızca ilgili yerde Özelliğin Hana, Hawaii ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo") kimliği. Belirtilen yer kimliği Hana, Hawaii için değilse stil geçerlidir.
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)
komutunu çağırın.