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, i PDI delle attività vengono visualizzati per impostazione predefinita sulla mappa quando il tipo di mappa è
normal
. I PDI di un'attività rappresentano attività come negozi, ristoranti, hotel
e altro ancora. I PDI di un'attività nelle 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 elementi come le fontane d'acqua di solito non lo sono (a meno che non siano di importanza nazionale o storica).
Monitora gli eventi di clic sui PDI
Se vuoi rispondere a un utente che tocca un PDI, puoi utilizzare una 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'UI predefinita al clic. Ciò significa che l'API non mostra automaticamente una finestra informativa o qualsiasi 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 PDI, l'app riceve un evento OnPoiClick(PointOfInterest)
che indica il punto d'interesse (PDI) su cui l'utente ha fatto clic. L'elemento
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 o 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 di PDI:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Per il codice Java e altri dettagli, consulta la guida su come nascondere gli elementi della mappa con lo stile.