- Pengantar
- Menambahkan beberapa lapisan GeoJSON, KML, dan cluster
- Menambahkan fitur Anda sendiri
- Menangani peristiwa klik
- Melihat aplikasi demo
Pengantar
Dalam tutorial sebelumnya, Anda telah mempelajari cara menambahkan fitur dari KML dan GeoJSON ke peta Anda, serta cluster penanda. Tetapi bagaimana jika Anda ingin menambahkan beberapa lapisan ini pada peta yang sama dan mendapatkan peristiwa klik independen untuk masing-masing lapisan?
Menambahkan beberapa lapisan GeoJSON, KML, dan cluster
Library menyertakan objek Manager
untuk membantu mengelola peristiwa klik untuk beberapa jenis lapisan. Jadi, sebelum menyiapkan lapisan, Anda harus membuat instance lapisan ini dan meneruskan
GoogleMap
lebih dahulu:
Kotlin
val markerManager = MarkerManager(map) val groundOverlayManager = GroundOverlayManager(map!!) val polygonManager = PolygonManager(map) val polylineManager = PolylineManager(map)
Java
MarkerManager markerManager = new MarkerManager(map); GroundOverlayManager groundOverlayManager = new GroundOverlayManager(map); PolygonManager polygonManager = new PolygonManager(map); PolylineManager polylineManager = new PolylineManager(map);
Selanjutnya, Anda dapat meneruskan class pengelola ini ke dalam konstruktor lapisan lain saat menyiapkannya:
Kotlin
val clusterManager = ClusterManager<MyItem>(context, map, markerManager) val geoJsonLineLayer = GeoJsonLayer( map, R.raw.geojson_file, context, markerManager, polygonManager, polylineManager, groundOverlayManager ) val kmlPolylineLayer = KmlLayer( map, R.raw.kml_file, context, markerManager, polygonManager, polylineManager, groundOverlayManager, null )
Java
ClusterManager<MyItem> clusterManager = new ClusterManager<>(context, map, markerManager); GeoJsonLayer geoJsonLineLayer = new GeoJsonLayer(map, R.raw.geojson_file, context, markerManager, polygonManager, polylineManager, groundOverlayManager); KmlLayer kmlPolylineLayer = new KmlLayer(map, R.raw.kml_file, context, markerManager, polygonManager, polylineManager, groundOverlayManager, null);
Menambahkan fitur Anda sendiri
Jika Anda ingin menambahkan penanda, overlay bumi, polyline, atau poligon Anda sendiri bersama lapisan ini, buat Collection
Anda sendiri, lalu gunakan Managers
untuk menambahkan fitur, bukan menambahkannya secara langsung ke objek GoogleMap
.
Misalnya, jika Anda ingin menambahkan penanda baru:
Kotlin
val markerCollection = markerManager.newCollection() markerCollection.addMarker( MarkerOptions() .position(LatLng(51.150000, -0.150032)) .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)) .title("Unclustered marker") )
Java
MarkerManager.Collection markerCollection = markerManager.newCollection(); markerCollection.addMarker(new MarkerOptions() .position(new LatLng(51.150000, -0.150032)) .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)) .title("Unclustered marker"));
Menangani peristiwa klik
Untuk cluster, KML, dan GeoJSON, pemroses klik berfungsi seperti biasa - selama Anda meneruskan class Manager
dalam konstruktor lapisan yang ditetapkan.
Misalnya, berikut cara menyiapkan pemroses klik untuk lapisan KML:
Kotlin
kmlPolylineLayer.addLayerToMap() kmlPolylineLayer.setOnFeatureClickListener { feature: Feature -> Toast.makeText(context, "KML polyline clicked: ${feature.getProperty("name")}", Toast.LENGTH_SHORT ).show() }
Java
kmlPolylineLayer.addLayerToMap(); kmlPolylineLayer.setOnFeatureClickListener(feature -> Toast.makeText(context, "KML polyline clicked: " + feature.getProperty("name"), Toast.LENGTH_SHORT).show());
Saat menambahkan penanda, overlay bumi, polyline, atau poligon Anda sendiri, pastikan untuk menambahkan pemroses
klik ke objek Collection
tersebut. Misalnya, berikut adalah cara menyiapkan pemroses klik
penanda di markerCollection
:
Kotlin
markerCollection.setOnMarkerClickListener { marker: Marker -> Toast.makeText( context, "Marker clicked: ${marker.title}", Toast.LENGTH_SHORT ).show() false }
Java
markerCollection.setOnMarkerClickListener(marker -> { Toast.makeText(context, "Marker clicked: " + marker.getTitle(), Toast.LENGTH_SHORT).show(); return false; });
Melihat aplikasi demo
Untuk contoh penambahan beberapa lapisan, lihat MultiLayerDemoActivity
pada aplikasi demo yang disertakan dengan library utilitas. Panduan penyiapan menunjukkan cara menjalankan aplikasi demo.