- 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
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data
val layer = GeoJsonLayer(map, geoJsonData)
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
val layer = GeoJsonLayer(map, R.raw.geojson_file, context)
GeoJsonLayer layer = new GeoJsonLayer(map, R.raw.geojson_file, context);
Setelah Anda membuat GeoJsonLayer
, panggil
addLayerToMap()
untuk menambahkan data yang diimpor ke peta:
layer.addLayerToMap()
layer.addLayerToMap();
Menghapus GeoJsonLayer
Anggaplah Anda telah menambahkan lapisan ini
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data
val layer = GeoJsonLayer(map, geoJsonData)
JSONObject geoJsonData = // JSONObject containing the GeoJSON data
GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
Untuk menghapus GeoJsonLayer, panggil removeLayerFromMap()
layer.removeLayerFromMap()
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.
val point = GeoJsonPoint(LatLng(0.0, 0.0))
val properties = hashMapOf("Ocean" to "South Atlantic")
val pointFeature = GeoJsonFeature(point, "Origin", properties, null)
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.
layer.addFeature(pointFeature)
layer.addFeature(pointFeature);
Untuk menghapus fitur setelah menambahkannya ke lapisan, panggil
removeFeature()
dan teruskan fitur yang akan dihapus.
layer.removeFeature(pointFeature)
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.
for (feature in layer.features) {
// Do something to the feature
}
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.
if (feature.hasProperty("Ocean")) {
val oceanProperty = feature.getProperty("Ocean")
}
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:
// Set a listener for geometry clicked events.
layer.setOnFeatureClickListener { feature ->
Log.i("GeoJsonClick", "Feature clicked: ${feature.getProperty("title")}")
}
// 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.
val pointStyle = layer.defaultPointStyle
pointStyle.isDraggable = true
pointStyle.title = "Hello, World!"
pointStyle.snippet = "I am a draggable marker"
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.
// 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
// 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.