- 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
:
val markerManager = MarkerManager(map)
val groundOverlayManager = GroundOverlayManager(map!!)
val polygonManager = PolygonManager(map)
val polylineManager = PolylineManager(map)
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 :
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
)
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 :
val markerCollection =
markerManager.newCollection()
markerCollection.addMarker(
MarkerOptions()
.position(LatLng(51.150000, -0.150032))
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
.title("Unclustered marker")
)
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 :
kmlPolylineLayer.addLayerToMap()
kmlPolylineLayer.setOnFeatureClickListener { feature: Feature ->
Toast.makeText(context,
"KML polyline clicked: ${feature.getProperty("name")}",
Toast.LENGTH_SHORT
).show()
}
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
:
markerCollection.setOnMarkerClickListener { marker: Marker ->
Toast.makeText(
context,
"Marker clicked: ${marker.title}",
Toast.LENGTH_SHORT
).show()
false
}
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.