Par défaut, les points d'intérêt (POI) s'affichent sur la carte de base avec les icônes correspondantes. Les POI incluent les parcs, les écoles, les bâtiments administratifs, etc.
Par ailleurs, les POI commerciaux sont affichés par défaut sur la carte lorsque le type de la carte est défini sur normal
. Ces POI représentent des établissements tels que des magasins, des restaurants, des hôtels, etc. Sur les plans d'intérieur (plans d'étage), les POI commerciaux ne s'affichent que lorsque la carte est en mode simplifié.
Un POI correspond à un ID de lieu, tel que défini dans le SDK Places pour Android. Par exemple, les parcs de loisirs sont des POI, mais les éléments tels que les fontaines ne sont en général pas considérés comme des points d'intérêt (à moins qu'ils ne revêtent une importance historique ou nationale).
Écouter les événements de clic sur des POI
Si vous souhaitez répondre à un utilisateur qui appuie sur un POI, vous pouvez utiliser un OnPoiClickListener
comme illustré dans l'exemple de code suivant :
Kotlin
internal class OnPoiClickDemoActivity : AppCompatActivity(), OnMapReadyCallback, OnPoiClickListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.poi_click_demo) val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) } override fun onMapReady(map: GoogleMap) { map.setOnPoiClickListener(this) } override fun onPoiClick(poi: PointOfInterest) { Toast.makeText(this, """Clicked: ${poi.name} Place ID:${poi.placeId} Latitude:${poi.latLng.latitude} Longitude:${poi.latLng.longitude}""", Toast.LENGTH_SHORT ).show() } }
Java
class OnPoiClickDemoActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleMap.OnPoiClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.poi_click_demo); SupportMapFragment mapFragment; mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap map) { map.setOnPoiClickListener(this); } @Override public void onPoiClick(PointOfInterest poi) { Toast.makeText(this, "Clicked: " + poi.name + "\nPlace ID:" + poi.placeId + "\nLatitude:" + poi.latLng.latitude + " Longitude:" + poi.latLng.longitude, Toast.LENGTH_SHORT).show(); } }
Par défaut, les POI sont affichés sur la carte et aucune interface utilisateur n'apparaît lorsque l'utilisateur appuie sur un POI. Autrement dit, l'API n'affiche pas automatiquement une fenêtre d'informations ni une autre interface utilisateur lorsque l'utilisateur appuie sur un POI.
Comme le montre l'exemple ci-dessus, vous définissez OnPoiClickListener
sur la carte en appelant GoogleMap.setOnPoiClickListener(OnPoiClickListener)
.
Lorsqu'un utilisateur clique (ou appuie) sur un POI, votre application reçoit un événement OnPoiClick(PointOfInterest)
indiquant le point d'intérêt sur lequel l'utilisateur a cliqué. Le PointOfInterest
contient les coordonnées de latitude/longitude, l'ID de lieu et le nom du point d'intérêt.
Masquer des POI sur la carte
Vous pouvez masquer des points d'intérêt (POI) sur la carte en appliquant des styles personnalisés à tous les POI ou à certaines catégories de POI seulement.
La déclaration de style JSON suivante masque tous les POI commerciaux sur la carte :
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Dans cet autre exemple, la déclaration JSON simplifie l'affichage de toutes les catégories de POI :
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Pour plus d'informations sur le code Java, consultez le guide expliquant comment masquer des éléments cartographiques avec des styles.