Google Haritalar Android GeoJSON Yardımcı Programı

Platform seçin: Android iOS JavaScript
  1. Giriş
  2. Haritanıza bir GeoJsontier ekleme
  3. GeoJsontier'i kaldırma
  4. GeoJsonFeature ekleme ve kaldırma
  5. GeoJsonFeatures ve özelliklerine erişme
  6. GeoJsonKatman ve GeoJsonFeatures stilini belirleme
  7. 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:

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

  1. İlgili stil nesnesini oluşturun. Bu nesne GeoJsonPointStyle, GeoJsonLineStringStyle veya GeoJsonPolygonStyle olabilir.
  2. İstediğiniz seçenekleri stile uygulayın.
  3. Stil nesnesini GeoJsonFeature üzerinde ilgili yönteme iletin. Bu yöntem setPointStyle(), setLineStringStyle() veya setPolygonStyle() 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.