Attività e altri punti d'interesse

Seleziona la piattaforma: Android iOS JavaScript

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

Inoltre, i PDI delle attività vengono visualizzati per impostazione predefinita sulla mappa se il tipo di mappa è normal. I PDI di un'attività rappresentano attività quali negozi, ristoranti, hotel e altro ancora. I PDI di un'attività nelle mappe di interni (piani dei piani) vengono visualizzati solo su un mappa in modalità Lite.

Un PDI corrisponde a un ID luogo, come definito nella SDK Places per Android. Ad esempio, i parchi ricreativi sono PDI, elementi come le fontane d'acqua di solito non sono PDI (a meno che non siano di proprietà o significato storico).

Monitora gli eventi di clic sui PDI

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

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'UI predefinita al clic. Vale a dire che l'API non mostra automaticamente una finestra informativa o qualsiasi altro quando l'utente tocca un PDI.

Come mostra l'esempio precedente, imposti OnPoiClickListener sulla mappa per chiamata GoogleMap.setOnPoiClickListener(OnPoiClickListener). Quando un utente fa clic (tocca) su un PDI, l'app riceve un Evento OnPoiClick(PointOfInterest) che indica il punto d'interesse (PDI) su cui l'utente ha fatto clic. La PointOfInterest contiene le coordinate di latitudine/longitudine, l'ID luogo e il nome del punto d'interesse.

Interrompere la visualizzazione dei PDI sulla mappa

Puoi nascondere i punti di interesse applicando stili personalizzati a tutti i PDI oppure a categorie specifiche di PDI.

La seguente dichiarazione di stile JSON nasconde tutti i PDI aziendali sulla mappa:

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

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

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

Per il codice Java e altri dettagli, consulta la guida a nascondere gli elementi della mappa con lo stile.