- Introduction
- Ajouter plusieurs calques de groupe, KML et GeoJSON
- Ajouter vos propres éléments géographiques
- Gérer les événements de clic
- Voir l'application de démonstration
Introduction
Dans les précédents tutoriels, vous avez découvert comment ajouter des éléments géographiques KML et GeoJSON à votre carte, ainsi que des groupes de repères. Mais comment ajouter plusieurs de ces calques sur la même carte et obtenir des événements de clic indépendants pour chacun d'entre eux ?
Ajouter plusieurs calques de groupe, KML et GeoJSON
La bibliothèque comprend des Manager
objets permettant de gérer les événements de clic de plusieurs types de calques. Par conséquent, avant de configurer les calques, vous devez d'abord les instancier et les transmettre dans votre GoogleMap
:
Java
MarkerManager markerManager = new MarkerManager(map); GroundOverlayManager groundOverlayManager = new GroundOverlayManager(map); PolygonManager polygonManager = new PolygonManager(map); PolylineManager polylineManager = new PolylineManager(map);
Kotlin
val markerManager = MarkerManager(map) val groundOverlayManager = GroundOverlayManager(map!!) val polygonManager = PolygonManager(map) val polylineManager = PolylineManager(map)
Vous pouvez ensuite transmettre ces classes de gestionnaire aux constructeurs des autres calques au moment de leur configuration :
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);
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 )
Ajouter vos propres éléments géographiques
Si vous souhaitez ajouter vos propres repères, superpositions au sol, polylignes ou polygones à côté de ces calques, créez votre propre Collection
, puis utilisez les Managers
pour ajouter les éléments géographiques au lieu de les ajouter directement à l'objet GoogleMap
.
Par exemple, si vous souhaitez ajouter un repère :
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"));
Kotlin
val markerCollection = markerManager.newCollection() markerCollection.addMarker( MarkerOptions() .position(LatLng(51.150000, -0.150032)) .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)) .title("Unclustered marker") )
Gérer les événements de clic
Pour les clusters, KML et GeoJSON, les écouteurs de clics fonctionnent de manière normale, à condition que vous transmettiez les classes Manager
dans le constructeur du calque que vous définissez.
Par exemple, voici comment configurer un écouteur de clic pour le calque KML :
Java
kmlPolylineLayer.addLayerToMap(); kmlPolylineLayer.setOnFeatureClickListener(feature -> Toast.makeText(context, "KML polyline clicked: " + feature.getProperty("name"), Toast.LENGTH_SHORT).show());
Kotlin
kmlPolylineLayer.addLayerToMap() kmlPolylineLayer.setOnFeatureClickListener { feature: Feature -> Toast.makeText(context, "KML polyline clicked: ${feature.getProperty("name")}", Toast.LENGTH_SHORT ).show() }
Lorsque vous ajoutez vos propres repères, superpositions au sol, polylignes ou polygones, assurez-vous simplement d'ajouter des écouteurs de clics à ces objets Collection
. Par exemple, voici comment configurer l'écouteur de clic du repère sur le markerCollection
:
Java
markerCollection.setOnMarkerClickListener(marker -> { Toast.makeText(context, "Marker clicked: " + marker.getTitle(), Toast.LENGTH_SHORT).show(); return false; });
Kotlin
markerCollection.setOnMarkerClickListener { marker: Marker -> Toast.makeText( context, "Marker clicked: ${marker.title}", Toast.LENGTH_SHORT ).show() false }
Voir l'application de démonstration
Pour savoir comment ajouter plusieurs calques, consultez MultiLayerDemoActivity
dans l'application de démonstration fournie avec la bibliothèque d'utilitaires. Le guide de configuration vous explique comment exécuter l'application de démonstration.