- Giriş
- Bir Haritanıza GeoJsonKatman ekleme
- GeoJsonLayer
- Bir GeoJsonFeature
- GeoJsonFeatures'a erişin ve mülkleri
- GeoJsonKatmanlar'ın stilini ayarlayın ve GeoJsonFeatures
- Demo uygulamasını inceleyin
Giriş
GeoJSON, JSON verilerinin bir uzantısıdır
biçimindedir ve coğrafi verileri temsil eder. Bu yardımcı programı kullanarak
coğrafi özellikleri GeoJSON biçiminde oluşturabilir ve bunları,
tıklayın. GeoJSON verilerinizi haritaya eklemek veya haritadan kaldırmak için şu numarayı arayın:
Sırasıyla addLayerToMap()
ve removeLayerFromMap()
. Benzer şekilde
telefon ederek özellikleri tek tek ekleyebilir ve kaldırabilirsiniz
addFeature()
removeFeature()
ve
GeoJsonFeature
nesne. Özelliklere erişmek için:
Katmana eklenen tüm
GeoJsonFeature
nesnenin bir yinelemesini almak için getFeatures()
öğesini çağırabilir.
Ayrıca, özellikleri etkinleştirilmeden önce bunlara uygulanacak varsayılan stilleri de
getDefaultPointStyle()
çağırarak, katmana eklendi
getDefaultLineStringStyle()
veya
getDefaultPolygonStyle()
ve her biri için stil seçenekleri ayarlanıyor.
Alternatif olarak stili tek bir kullanıcı için de ayarlayabilirsiniz
setPointStyle()
numaralı telefonu arayarak GeoJsonFeature
,
setLineStringStyle()
veya setPolygonStyle()
özelliğini iletmenize yardımcı olur.
Haritanıza GeoJsonKatman ekleyin
Haritaya bir GeoJson katmanı eklemek için, önce bir GeoJsonlayer örneği oluşturun sınıfını kullanır. GeoJsonKatman'ı örneklendirmenin iki yolu vardır.
Bir JSONObject
hizmetinden içe aktarmak için şunlara ihtiyacınız vardır:
- Katmanın oluşturulacağı
GoogleMap
nesnesi JSONObject
katman
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 aktarma yapmak için aşağıdakilere ihtiyacınız vardır:
- Katmanın oluşturulacağı
GoogleMap
nesnesi - GeoJSON verilerini içeren yerel kaynak dosyası
- Yerel bir kaynağı açmak için gerekli olan
Context
nesnesi dosya
Kotlin
val layer = GeoJsonLayer(map, R.raw.geojson_file, context)
Java
GeoJsonLayer layer = new GeoJsonLayer(map, R.raw.geojson_file, context);
GeoJsonLayer
öğesini oluşturduktan sonra şu çağrıyı yapın:
addLayerToMap()
:
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
GeoJsonKatman'ı kaldırın
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()
komutunu çağırın
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
GeoJsonFeature ekleme ve kaldırma
GeoJSON'daki bir özellik "feature" türündedir. Bir geometri, bir ve isteğe bağlı olarak sınırlayıcı kutu ya da kimliğe sahiptir.
Ayrı ayrı GeoJsonFeature
nesne oluşturabilir ve bunları ekleyebilirsiniz
GeoJsonLayer
.
0, 0 ve üzerinde bir nokta içeren bir özellik oluşturduğunuzu varsayalım. özelliklerinde tek bir giriş olup sınırlayıcı kutu yoktur.
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()
numaralı telefonu arayın ve
özelliği seçin.
Kotlin
layer.addFeature(pointFeature)
Java
layer.addFeature(pointFeature);
Bir özelliği katmana ekledikten sonra kaldırmak için şu çağrıyı yapın:
removeFeature()
ve kaldırmak için özelliği iletin.
Kotlin
layer.removeFeature(pointFeature)
Java
layer.removeFeature(pointFeature);
GeoJsonFeatures ve özelliklerine erişme
Katmana eklenen tüm GeoJsonFeatures özelliklerine erişmek için
şu GeoJsonLayer
cihazında getFeatures()
adlı kişiyi ara:
oluşturuyor. Bu, GeoJsonFeatures
iterasyon değeri döndürür
aşağıda gösterildiği gibi her biri için bir döngü kullanarak erişebileceğiniz biçimde erişebileceğinizi unutmayın.
Kotlin
for (feature in layer.features) { // Do something to the feature }
Java
for (GeoJsonFeature feature : layer.getFeatures()) { // Do something to the feature }
hasProperty()
ve getProperty()
yöntemlerini şurada kullan:
kontrol etmek için getFeatures()
yöntemiyle birlikte
özelliğinin belirli bir özelliği vardır ve varsa ona erişebilir.
Kotlin
if (feature.hasProperty("Ocean")) { val oceanProperty = feature.getProperty("Ocean") }
Java
if (feature.hasProperty("Ocean")) { String oceanProperty = feature.getProperty("Ocean"); }
GeoJSON Geometri Tıklama Etkinlikleri
Şuradaki tıklama etkinliklerini dinlemek için GeoJsonLayer.OnFeatureClickListener()
kullanabilirsiniz:
Geometri özelliklerini görebilirsiniz. Aşağıdaki örnekte, kullanıcı aşağıdaki işlemleri gerçekleştirdiğinde bir özelliğin başlığını günlüğe
Kullanıcı özelliği tıkladığında
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")); } });
GeoJsonKatman ve GeoJsonFeatures özelliklerinin stilini ayarlama
Bir GeoJsonKatman için varsayılan stiller ayarlayabilir veya özellikleri tek tek biçimlendirebilirsiniz var.
Varsayılan Stiller
Bir GeoJsonKatmanda, herhangi bir nokta veya çizgi dizeleri için varsayılan stiller çokgenleri görebilirsiniz. Varsayılan stiller yalnızca şu durumlarda uygulanır: özellik, geometrilerinden herhangi biri için ayarlanmış bir stile sahip değildir. Herhangi biri varsayılan stilde yaptığınız değişiklikler tüm özelliklere de yansıtılır varsayılan stili kullananlar var.
Varsayılan stil uygulama adımları şunlardır:
- İlgili varsayılan stil nesnesini alın. Bu,
GeoJsonPointStyle
,GeoJsonLineStringStyle
veyaGeoJsonPolygonStyle
. - İstediğiniz seçenekleri stile uygulayın.
Örneğin, aşağıdaki kod örneğinde, varsayılan noktanın nasıl değiştirileceği gösterilmektedir bu stil, noktaların bir başlık ve snippet ile sürüklenebilir olmasını sağlar.
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 özel stiller
Alternatif olarak, katmandaki tek tek özelliklerin stil özelliklerini ayarlayabilirsiniz. Uygulanacak adımlar
GeoJsonFeature
öğesine stil uygulama aşağıdaki gibidir.
- İlgili stil nesnesini oluşturun. Bu,
GeoJsonPointStyle
,GeoJsonLineStringStyle
veyaGeoJsonPolygonStyle
. - İstediğiniz seçenekleri stile uygulayın.
- Stil nesnesini şuraya geçirin:
GeoJsonFeature
üzerinde ilgili yöntemisetPointStyle()
,setLineStringStyle()
veyasetPolygonStyle()
.
Örneğin, bir resim öğesi için çizgi dizesi stilinin nasıl
GeoJsonFeature
ekleyin.
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 uygulamayı göster
Bir URL'den GeoJSON dosyasını içe aktarma ve katman oluşturma örneği için
demo uygulamadaki GeoJsonDemoActivity
uygulamasına göz atın.
kitaplığıyla birlikte gönderilir. Kurulum kılavuzu, bu cihazın nasıl
nasıl çalıştırabileceğinizi göstereceğim.