Utilitaire multicalque de Google Maps

Sélectionnez une plate-forme : Android JavaScript
  1. Introduction
  2. Ajouter plusieurs calques de groupe, KML et GeoJSON
  3. Ajouter vos propres éléments géographiques
  4. Gérer les événements de clic
  5. 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 Managerobjets 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.