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

Sélectionnez une plate-forme : Android iOS JavaScript

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.