Établissements et autres points d'intérêt

Par défaut, les points d'intérêt (POI) sont affichés sur la carte de base avec les icônes qui leur correspondent. Les POI incluent les parcs, les écoles, les bâtiments administratifs, etc.

Par ailleurs, les POI de type établissement 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 de type "établissement" ne s'affichent que lorsque la carte est en mode simplifié.

Un POI correspond à un identifiant 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 :

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();
    }
}
      

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()
    }
}
      

Par défaut, les POI sont affichés sur la carte, mais il n'y a pas d'interface utilisateur de clic par défaut. 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'identifiant 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 de type "établissement" 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 géographiques de la carte avec des styles.