Per impostazione predefinita, i punti di interesse (PDI) vengono visualizzati sulla mappa di base insieme alle icone corrispondenti. I PDI includono parchi, scuole, edifici governativi e altro ancora.
Inoltre, i PDI commerciali vengono visualizzati per impostazione predefinita sulla mappa quando il tipo di mappa è
normal
. I PDI delle attività rappresentano attività come negozi, ristoranti, hotel e altro ancora. I PDI delle attività sulle mappe indoor (planimetrie) vengono visualizzati solo su una mappa in modalità Lite.
Un punto d'interesse corrisponde a un ID luogo, come definito nell'SDK Places per Android. Ad esempio, i parchi ricreativi sono PDI, ma elementi come le fontanelle in genere non sono PDI (a meno che non abbiano un'importanza nazionale o storica).
Ascolta gli eventi di clic sui PDI
Se vuoi rispondere a un utente che tocca un punto d'interesse, 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. ovvero l'API non mostra automaticamente una finestra informativa o un'altra interfaccia utente quando l'utente tocca un PDI.
Come mostrato nell'esempio precedente, imposti
OnPoiClickListener
sulla mappa chiamando
GoogleMap.setOnPoiClickListener(OnPoiClickListener)
.
Quando un utente fa clic (tocca) su un punto d'interesse, la tua app riceve un evento
OnPoiClick(PointOfInterest)
che indica il punto d'interesse su cui l'utente ha fatto clic. PointOfInterest
contiene le coordinate di latitudine/longitudine, l'ID luogo e il nome del punto d'interesse.
Impedire la visualizzazione dei PDI sulla mappa
Puoi nascondere i punti d'interesse applicando stili personalizzati a tutti i punti d'interesse o a categorie specifiche di punti d'interesse.
La seguente dichiarazione di stile JSON nasconde tutti i PDI delle attività sulla mappa:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Come altro esempio, il seguente codice 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 per nascondere gli elementi della mappa con gli stili.