- 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
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);
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
Kotlin
val layer = GeoJsonLayer(map, R.raw.geojson_file, context)
Java
GeoJsonLayer layer = new GeoJsonLayer(map, R.raw.geojson_file, context);
Setelah Anda membuat GeoJsonLayer
, panggil
addLayerToMap()
untuk menambahkan data yang diimpor ke peta:
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
Menghapus GeoJsonLayer
Anggaplah Anda telah menambahkan lapisan ini
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);
Untuk menghapus GeoJsonLayer, panggil removeLayerFromMap()
Kotlin
layer.removeLayerFromMap()
Java
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.
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);
Untuk menambahkan fitur ke lapisan, panggil addFeature()
dan teruskan
fitur yang akan ditambahkan.
Kotlin
layer.addFeature(pointFeature)
Java
layer.addFeature(pointFeature);
Untuk menghapus fitur setelah menambahkannya ke lapisan, panggil
removeFeature()
dan teruskan fitur yang akan dihapus.
Kotlin
layer.removeFeature(pointFeature)
Java
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. Tindakan ini akan menampilkan iterable GeoJsonFeatures
yang dapat Anda akses menggunakan loop for-each seperti yang ditampilkan di bawah.
Kotlin
for (feature in layer.features) { // Do something to the feature }
Java
for (GeoJsonFeature feature : layer.getFeatures()) { // 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.
Kotlin
if (feature.hasProperty("Ocean")) { val oceanProperty = feature.getProperty("Ocean") }
Java
if (feature.hasProperty("Ocean")) { String 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:
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")); } });
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.
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");
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.
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);
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.