Attività e altri punti d'interesse

Seleziona la piattaforma: Android iOS JavaScript

Per impostazione predefinita, i punti d'interesse (PDI) vengono visualizzati sulla mappa base insieme alle icone corrispondenti. I PDI includono parchi, scuole, edifici governativi e altro ancora.

Inoltre, per impostazione predefinita, i PDI delle attività vengono visualizzati sulla mappa quando il tipo di mappa è normal. I PDI delle attività rappresentano attività come negozi, ristoranti, hotel e altro ancora. I PDI aziendali sulle mappe di interni (piante dei piani) vengono visualizzati solo su una mappa in modalità Lite.

Un PDI corrisponde a un ID luogo, come definito nell'SDK Places per Android. Ad esempio, i parchi ricreativi sono PDI, ma generalmente non sono PDI (a meno che non siano di rilevanza nazionale o storica).

Ascolta gli eventi di clic sui PDI

Se vuoi rispondere a un utente che tocca un PDI, puoi utilizzare un OnPoiClickListener come mostrato nel seguente esempio di codice:

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

      

I PDI vengono visualizzati sulla mappa per impostazione predefinita, ma non esiste un'interfaccia utente predefinita al clic. In altre parole, l'API non mostra automaticamente una finestra informativa o qualsiasi altra interfaccia utente quando l'utente tocca un PDI.

Come mostra l'esempio riportato sopra, imposta OnPoiClickListener sulla mappa chiamando GoogleMap.setOnPoiClickListener(OnPoiClickListener). Quando un utente fa clic (tocca) su un PDI, la tua app riceve un evento OnPoiClick(PointOfInterest) che indica il punto d'interesse (PDI) su cui l'utente ha fatto clic. PointOfInterest contiene le coordinate di latitudine e longitudine, l'ID del luogo e il nome del punto d'interesse.

Interrompi la visualizzazione dei PDI sulla mappa

Puoi nascondere i punti d'interesse (PDI) applicando stili personalizzati a tutti i PDI o a categorie specifiche di PDI.

La seguente dichiarazione di stile JSON nasconde tutti i PDI dell'attività sulla mappa:

[
  {
    "featureType": "poi.business",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]

Come ulteriore esempio, il seguente JSON semplifica la visualizzazione di tutte le categorie di PDI:

[
  {
    "featureType": "poi",
    "stylers": [
      { "visibility": "simplified" }
    ]
  }
]

Per il codice Java e altri dettagli, consulta la guida su come nascondere gli elementi delle mappe con gli stili.