Attività e altri punti d'interesse

Seleziona piattaforma: Android iOS JavaScript

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

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

Un PDI corrisponde a un ID luogo, come definito nell'SDK Places per Android. Ad esempio, i parchi ricreativi sono PDI, ma le fontane come l'acqua solitamente non sono PDI (a meno che non abbiano un significato nazionale o storico).

Ascolta gli eventi relativi ai clic sui PDI

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

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

      

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

Come nell'esempio precedente, puoi impostare OnPoiClickListener sulla mappa chiamando GoogleMap.setOnPoiClickListener(OnPoiClickListener). Quando un utente fa clic (tocca) su un PDI, riceve un evento OnPoiClick(PointOfInterest) che indica il punto di interesse su cui l'utente ha fatto clic. PointOfInterest contiene le coordinate di latitudine/longitudine, ID luogo e nome del punto d'interesse.

Interrompere la visualizzazione dei PDI sulla mappa

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

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

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

Un altro esempio è il seguente JSON che semplifica la visualizzazione di tutte le categorie di PDI:

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

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