- Pengantar
- Menambahkan GeoJsonLayer ke peta Anda
- Menghapus GeoJsonLayer
- Menambahkan dan menghapus GeoJsonFeature
- Mengakses GeoJsonFeatures dan propertinya
- Menata gaya GeoJsonLayer dan GeoJsonFeatures
- Melihat aplikasi demo
Pengantar
GeoJSON adalah ekstensi format data JSON
dan menampilkan data geografis. Dengan utilitas ini, Anda dapat menyimpan fitur geografis dalam format GeoJSON dan merendernya sebagai lapisan di atas peta. Untuk menambahkan dan menghapus data GeoJSON Anda ke dan dari peta, panggil addLayerToMap()
dan removeLayerFromMap()
masing-masing. Anda juga dapat menambahkan dan menghapus fitur dengan memanggil addFeature()
dan removeFeature()
serta meneruskan objek GeoJsonFeature
. Jika ingin mengakses fitur, Anda dapat memanggil getFeatures()
untuk mendapatkan iterable dari semua objek
GeoJsonFeature
yang telah ditambahkan ke lapisan.
Anda juga dapat menetapkan gaya default yang akan diterapkan pada fitur sebelum ditambahkan ke lapisan, dengan memanggil getDefaultPointStyle()
, getDefaultLineStringStyle()
, atau
getDefaultPolygonStyle()
, dan menetapkan opsi gayanya masing-masing.
Atau, Anda dapat menetapkan gaya setiap GeoJsonFeature
dengan memanggil setPointStyle()
, setLineStringStyle()
, atau setPolygonStyle()
pada fitur tersebut dan dengan meneruskan objek gaya yang relevan.
Menambahkan GeoJsonLayer ke peta Anda
Untuk menambahkan lapisan GeoJson ke peta, pertama-tama buat instance class GeoJsonLayer. Ada dua cara untuk membuat instance GeoJsonLayer.
Untuk mengimpor dari JSONObject
, Anda memerlukan hal berikut:
- Objek
GoogleMap
tempat lapisan akan dirender. JSONObject
berisi data GeoJSON yang akan ditambahkan ke lapisan
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Untuk mengimpor dari file GeoJSON lokal, Anda memerlukan hal berikut:
- Objek
GoogleMap
tempat lapisan akan dirender. - File resource lokal yang berisi data GeoJSON
- Objek
Context
, yang diperlukan untuk membuka file resource lokal
Java
GeoJsonLayer layer = new GeoJsonLayer(map, R.raw.geojson_file, context);
Kotlin
val layer = GeoJsonLayer(map, R.raw.geojson_file, context)
Setelah Anda membuat GeoJsonLayer
, panggil addLayerToMap()
untuk menambahkan data yang diimpor ke peta:
Java
layer.addLayerToMap();
Kotlin
layer.addLayerToMap()
Menghapus GeoJsonLayer
Anggaplah Anda telah menambahkan lapisan ini
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Untuk menghapus GeoJsonLayer, panggil removeLayerFromMap()
Java
layer.removeLayerFromMap();
Kotlin
layer.removeLayerFromMap()
Menambahkan dan menghapus GeoJsonFeature
Fitur dalam GeoJSON memiliki jenis "feature". Isinya adalah geometri, anggota properti, dan secara opsional berisi kotak pembatas atau ID.
Anda dapat membuat objek GeoJsonFeature
masing-masing, dan menambahkannya ke GeoJsonLayer
.
Anggaplah Anda telah membuat fitur yang berisi satu titik pada 0, 0 dengan satu entri dalam propertinya dan tanpa kotak pembatas.
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);
Kotlin
val point = GeoJsonPoint(LatLng(0.0, 0.0)) val properties = hashMapOf("Ocean" to "South Atlantic") val pointFeature = GeoJsonFeature(point, "Origin", properties, null)
Untuk menambahkan fitur ke lapisan, panggil addFeature()
dan teruskan fitur yang akan ditambahkan.
Java
layer.addFeature(pointFeature);
Kotlin
layer.addFeature(pointFeature)
Untuk menghapus fitur setelah menambahkannya ke lapisan, panggil removeFeature()
dan teruskan fitur yang akan dihapus.
Java
layer.removeFeature(pointFeature);
Kotlin
layer.removeFeature(pointFeature)
Mengakses GeoJsonFeatures dan propertinya
Untuk mengakses semua GeoJsonFeatures yang telah ditambahkan ke lapisan, Anda dapat memanggil getFeatures()
di GeoJsonLayer
yang telah Anda buat. Ini akan mengembalikan iterable GeoJsonFeatures
yang dapat Anda akses untuk setiap loop seperti yang ditampilkan di bawah ini.
Java
for (GeoJsonFeature feature : layer.getFeatures()) { // Do something to the feature }
Kotlin
for (feature in layer.features) { // Do something to the feature }
Gunakan metode hasProperty()
dan getProperty()
bersama-sama dengan metode getFeatures()
untuk memeriksa apakah setiap fitur yang disimpan memiliki properti tertentu dan mengaksesnya jika ada.
Java
if (feature.hasProperty("Ocean")) { String oceanProperty = feature.getProperty("Ocean"); }
Kotlin
if (feature.hasProperty("Ocean")) { val oceanProperty = feature.getProperty("Ocean") }
Peristiwa Klik Geometri GeoJSON
Anda dapat menggunakan GeoJsonLayer.OnFeatureClickListener()
untuk memantau peristiwa klik pada fitur geometri di peta. Contoh berikut mencatat judul fitur saat pengguna mengklik fitur:
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")); } });
Kotlin
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener { feature -> Log.i("GeoJsonClick", "Feature clicked: ${feature.getProperty("title")}") }
Menata gaya GeoJsonLayer dan GeoJsonFeatures
Anda dapat menetapkan gaya default untuk GeoJsonLayer, atau gaya masing-masing fitur dalam lapisan.
Gaya Default
Dalam GeoJsonLayer, Anda dapat menetapkan gaya default untuk semua titik, linestring, dan poligon yang telah ditambahkan ke lapisan. Gaya default hanya diterapkan jika fitur itu belum memiliki gaya yang ditetapkan untuk geometrinya. Semua perubahan yang Anda buat pada gaya default juga akan tercermin dalam semua fitur yang menggunakan gaya default tersebut.
Langkah-langkah untuk menerapkan gaya default adalah sebagai berikut
- Ambil objek gaya default yang relevan, ini bisa berupa
GeoJsonPointStyle
,GeoJsonLineStringStyle
, atauGeoJsonPolygonStyle
. - Terapkan opsi yang Anda inginkan pada gaya tersebut.
Misalnya, contoh kode berikut menampilkan cara memodifikasi gaya titik default yang akan membuat titik tersebut dapat ditarik bersama judul dan cuplikan.
Java
GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle(); pointStyle.setDraggable(true); pointStyle.setTitle("Hello, World!"); pointStyle.setSnippet("I am a draggable marker");
Kotlin
val pointStyle = layer.defaultPointStyle pointStyle.isDraggable = true pointStyle.title = "Hello, World!" pointStyle.snippet = "I am a draggable marker"
Gaya yang khusus untuk GeoJsonFeature
Atau, Anda dapat menata gaya masing-masing fitur dalam lapisan. Langkah-langkah untuk menerapkan gaya pada GeoJsonFeature
adalah sebagai berikut.
- Buat objek gaya yang relevan, ini dapat berupa
GeoJsonPointStyle
,GeoJsonLineStringStyle
, atauGeoJsonPolygonStyle
. - Terapkan opsi yang Anda inginkan pada gaya tersebut.
- Teruskan objek gaya ke metode yang relevan pada
GeoJsonFeature
yang dapat berupasetPointStyle()
,setLineStringStyle()
, atausetPolygonStyle()
.
Misalnya, berikut cara menyesuaikan gaya linestring untuk GeoJsonFeature
agar warnanya menjadi merah.
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);
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
Melihat aplikasi demo
Untuk mendapatkan contoh mengimpor file GeoJSON dari URL dan membuat lapisan menggunakan file tersebut, lihat GeoJsonDemoActivity
dalam aplikasi demo yang disertakan dengan library utilitas. Panduan penyiapan menunjukkan cara menjalankan aplikasi demo.