- Giriş
- Haritanıza bir GeoJsontier ekleme
- GeoJsontier'i kaldırma
- GeoJsonFeature ekleme ve kaldırma
- GeoJsonFeatures ve özelliklerine erişme
- GeoJsonKatman ve GeoJsonFeatures stilini belirleme
- Demo uygulamasına göz atın
Giriş
GeoJSON, JSON veri biçiminin bir uzantısıdır ve coğrafi verileri temsil eder. Bu yardımcı programı kullanarak coğrafi özellikleri GeoJSON biçiminde depolayabilir ve haritanın üzerinde bir katman olarak oluşturabilirsiniz. GeoJSON verilerinizi haritaya eklemek ve haritadan kaldırmak için sırasıyla addLayerToMap()
ve removeLayerFromMap()
numaralı telefonu arayın. Benzer şekilde, addFeature()
ve removeFeature()
çağırıp bir GeoJsonFeature
nesnesini ileterek bağımsız özellikleri ekleyip kaldırabilirsiniz. Özelliklere erişmek istiyorsanız katmana eklenen tüm
GeoJsonFeature
nesnelerinin yinelemesini almak için getFeatures()
yöntemini çağırabilirsiniz.
Ayrıca, getDefaultPointStyle()
, getDefaultLineStringStyle()
veya
getDefaultPolygonStyle()
yöntemini çağırarak ve her birinde stil seçeneklerini ayarlayarak, katmana eklenmeden önce özelliklere uygulanacak varsayılan stilleri ayarlayabilirsiniz.
Alternatif olarak, özellikte setPointStyle()
, setLineStringStyle()
veya setPolygonStyle()
yöntemini çağırıp ilgili stil nesnesini ileterek bağımsız bir GeoJsonFeature
için stili ayarlayabilirsiniz.
Haritanıza GeoJsonlayer ekleyin
Haritaya bir GeoJson katmanı eklemek için önce bir GeoJsontier sınıfının örneğini oluşturun. GeoJsonlayer'ı örneklendirmenin iki yolu vardır.
Bir JSONObject
dosyasından içe aktarmak için aşağıdakilere ihtiyacınız vardır:
- Katmanın oluşturulacağı
GoogleMap
nesne - Katmana eklenecek GeoJSON verilerini içeren
JSONObject
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
Yerel bir GeoJSON dosyasından içe aktarmak için aşağıdakilere ihtiyacınız vardır:
- Katmanın oluşturulacağı
GoogleMap
nesne - GeoJSON verilerini içeren yerel kaynak dosyası
Context
nesnesi (yerel kaynak dosyasını açmak için gereklidir)
Kotlin
val layer = GeoJsonLayer(map, R.raw.geojson_file, context)
Java
GeoJsonLayer layer = new GeoJsonLayer(map, R.raw.geojson_file, context);
GeoJsonLayer
oluşturduktan sonra, içe aktarılan verileri haritaya eklemek için addLayerToMap()
çağrısı yapın:
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
GeoJsonKatman'ı kaldırma
Bu katmanı eklediğinizi varsayalım:
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
GeoJsonlayer'ı temizlemek için removeLayerFromMap()
çağrısı yapın
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
GeoJsonFeature ekleme ve kaldırma
GeoJSON'daki bir özellik "feature" (özellik) türüne sahiptir. Bir geometri, bir özellik üyesi içerir ve isteğe bağlı olarak bir sınırlayıcı kutu veya kimlik içerir.
GeoJsonFeature
nesnelerini ayrı ayrı oluşturabilir ve bunları GeoJsonLayer
içine ekleyebilirsiniz.
0 veya 0'da bir nokta içeren ve özelliklerinde bir giriş bulunan ve sınırlayıcı kutu içermeyen bir özellik oluşturduğunuzu varsayalım.
Kotlin
val point = GeoJsonPoint(LatLng(0.0, 0.0)) val properties = hashMapOf("Ocean" to "South Atlantic") val pointFeature = GeoJsonFeature(point, "Origin", properties, null)
Java
GeoJsonPoint point = new GeoJsonPoint(new LatLng(0, 0)); HashMap<String, String> properties = new HashMap<>(); properties.put("Ocean", "South Atlantic"); GeoJsonFeature pointFeature = new GeoJsonFeature(point, "Origin", properties, null);
Özelliği katmana eklemek için addFeature()
yöntemini çağırın ve eklenecek özelliği iletin.
Kotlin
layer.addFeature(pointFeature)
Java
layer.addFeature(pointFeature);
Bir özelliği katmana ekledikten sonra kaldırmak için removeFeature()
yöntemini çağırın ve özelliği aktarın.
Kotlin
layer.removeFeature(pointFeature)
Java
layer.removeFeature(pointFeature);
GeoJsonFeatures ve özelliklerine erişme
Katmana eklenen tüm GeoJsonFeatures özelliğine erişmek için oluşturduğunuz GeoJsonLayer
üzerinde getFeatures()
öğesini çağırabilirsiniz. Bu işlem, aşağıda gösterildiği gibi her bir "for-" döngüsünü kullanarak erişebileceğiniz GeoJsonFeatures
yinelemesini döndürür.
Kotlin
for (feature in layer.features) { // Do something to the feature }
Java
for (GeoJsonFeature feature : layer.getFeatures()) { // Do something to the feature }
Depolanan her özelliğin belirli bir özelliğe sahip olup olmadığını kontrol etmek ve varsa bu özelliğe erişmek için getFeatures()
yöntemiyle birlikte hasProperty()
ve getProperty()
yöntemlerini kullanın.
Kotlin
if (feature.hasProperty("Ocean")) { val oceanProperty = feature.getProperty("Ocean") }
Java
if (feature.hasProperty("Ocean")) { String oceanProperty = feature.getProperty("Ocean"); }
GeoJSON Geometry Tıklama Etkinlikleri
Haritadaki geometri özelliklerinde tıklama etkinliklerini dinlemek için GeoJsonLayer.OnFeatureClickListener()
kullanabilirsiniz. Aşağıdaki örnekte, kullanıcı bir özelliği tıkladığında özelliğin başlığı günlüğe kaydedilir:
Kotlin
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener { feature -> Log.i("GeoJsonClick", "Feature clicked: ${feature.getProperty("title")}") }
Java
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener(new Layer.OnFeatureClickListener() { @Override public void onFeatureClick(Feature feature) { Log.i("GeoJsonClick", "Feature clicked: " + feature.getProperty("title")); } });
GeoJsontier ve GeoJsonFeatures stilini belirleme
Bir GeoJsonKatman için varsayılan stiller ayarlayabilir veya katmanda tek tek özelliklerin stilini belirleyebilirsiniz.
Varsayılan Stiller
Bir GeoJsonlayer'da, katmana eklenen tüm noktalar, çizgi dizeleri ve poligonlar için varsayılan stiller ayarlayabilirsiniz. Varsayılan stiller, yalnızca özelliğin geometrilerinin ikisi için de ayarlanmış bir stil yoksa uygulanır. Varsayılan stilde yaptığınız değişiklikler, varsayılan stili kullanan tüm özelliklere de yansıtılır.
Varsayılan stil uygulama adımları şunlardır:
- İlgili varsayılan stil nesnesini alın. Bu öğe
GeoJsonPointStyle
,GeoJsonLineStringStyle
veyaGeoJsonPolygonStyle
olabilir. - İstediğiniz seçenekleri stile uygulayın.
Örneğin, aşağıdaki kod örneğinde, noktaların başlık ve snippet ile sürüklenebilmesini sağlayacak varsayılan nokta stilinin nasıl değiştirileceği gösterilmektedir.
Kotlin
val pointStyle = layer.defaultPointStyle pointStyle.isDraggable = true pointStyle.title = "Hello, World!" pointStyle.snippet = "I am a draggable marker"
Java
GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle(); pointStyle.setDraggable(true); pointStyle.setTitle("Hello, World!"); pointStyle.setSnippet("I am a draggable marker");
Bir GeoJsonFeature'a özgü stiller
Alternatif olarak, katmandaki özellikleri tek tek biçimlendirebilirsiniz. GeoJsonFeature
üzerinde stil uygulama adımları aşağıdaki gibidir.
- İlgili stil nesnesini oluşturun. Bu nesne
GeoJsonPointStyle
,GeoJsonLineStringStyle
veyaGeoJsonPolygonStyle
olabilir. - İstediğiniz seçenekleri stile uygulayın.
- Stil nesnesini
GeoJsonFeature
üzerinde ilgili yönteme iletin. Bu yöntemsetPointStyle()
,setLineStringStyle()
veyasetPolygonStyle()
olur.
Örneğin, bir GeoJsonFeature
için çizgi stilini, renginin kırmızı olacağı şekilde nasıl özelleştirebilirsiniz?
Kotlin
// Create a new feature containing a linestring val lineStringArray: MutableList<LatLng> = ArrayList() lineStringArray.add(LatLng(0.0, 0.0)) lineStringArray.add(LatLng(50.0, 50.0)) val lineString = GeoJsonLineString(lineStringArray) val lineStringFeature = GeoJsonFeature(lineString, null, null, null) // Set the color of the linestring to red val lineStringStyle = GeoJsonLineStringStyle() lineStringStyle.color = Color.RED // Set the style of the feature lineStringFeature.lineStringStyle = lineStringStyle
Java
// Create a new feature containing a linestring List<LatLng> lineStringArray = new ArrayList<LatLng>(); lineStringArray.add(new LatLng(0, 0)); lineStringArray.add(new LatLng(50, 50)); GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray); GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null); // Set the color of the linestring to red GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle(); lineStringStyle.setColor(Color.RED); // Set the style of the feature lineStringFeature.setLineStringStyle(lineStringStyle);
Demo uygulamaya göz atın
Bir URL'den GeoJSON dosyasını içe aktarma ve bu dosyayla katman oluşturma örneği için, demo uygulamasında yardımcı program kitaplığıyla birlikte gelen GeoJsonDemoActivity
öğesine göz atın. Kurulum kılavuzu, demo uygulamanın nasıl çalıştırılacağını gösterir.