- 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
:
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);
Vous pouvez ensuite transmettre ces classes de gestionnaire aux constructeurs des autres calques au moment de leur configuration :
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);
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 :
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"));
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 :
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());
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
:
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; });
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.