Google Haritalar Android GeoJSON Yardımcı Programı

Platform seçin: Android iOS JavaScript
  1. Giriş
  2. Bir Haritanıza GeoJsonKatman ekleme
  3. GeoJsonLayer
  4. Bir GeoJsonFeature
  5. GeoJsonFeatures'a erişin ve mülkleri
  6. GeoJsonKatmanlar'ın stilini ayarlayın ve GeoJsonFeatures
  7. 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:

  1. İlgili varsayılan stil nesnesini alın. Bu, GeoJsonPointStyle, GeoJsonLineStringStyle veya GeoJsonPolygonStyle.
  2. İ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.

  1. İlgili stil nesnesini oluşturun. Bu, GeoJsonPointStyle, GeoJsonLineStringStyle veya GeoJsonPolygonStyle.
  2. İstediğiniz seçenekleri stile uygulayın.
  3. Stil nesnesini şuraya geçirin: GeoJsonFeature üzerinde ilgili yöntemi setPointStyle(), setLineStringStyle() veya setPolygonStyle().

Ö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.