Standardmäßig werden Points of Interest (POIs) zusammen mit den entsprechenden Symbolen auf der Basiskarte dargestellt. POIs sind beispielsweise Parks, Schulen und Behördengebäude.
Darüber hinaus werden Unternehmens-POIs standardmäßig auf der Karte angezeigt, wenn der Kartentyp normal
ist. Unternehmens-POIs sind beispielsweise Geschäfte, Restaurants und Hotels. Unternehmens-POIs auf Indoor-Karten (Gebäudeplänen) werden nur auf einer Karte im Lite-Modus angezeigt.
Ein POI entspricht einer Orts-ID gemäß der Definition im Places SDK for Android. So sind beispielsweise der Erholung dienende Parks POIs, Objekte wie Springbrunnen hingegen nicht (es sei denn, sie sind von nationaler oder historischer Bedeutung).
Auf Klickereignisse für POIs warten
Soll eine Reaktion erfolgen, wenn ein Nutzer auf einen POI tippt, können Sie einen OnPoiClickListener
verwenden, wie im folgenden Codebeispiel veranschaulicht:
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(); } }
POIs erscheinen standardmäßig auf der Karte. Beim Anklicken wird jedoch keine standardmäßige UI angezeigt. Das heißt, über die API wird nicht automatisch ein Infofenster oder ein anderes UI-Element aufgerufen, wenn der Nutzer auf einen POI tippt.
Wie im Beispiel oben gezeigt, legen Sie den OnPoiClickListener
auf der Karte fest, indem Sie GoogleMap.setOnPoiClickListener(OnPoiClickListener)
aufrufen.
Wenn ein Nutzer auf einen POI klickt (oder tippt), empfängt Ihre App ein Ereignis vom Typ OnPoiClick(PointOfInterest)
. Dieses Ereignis gibt auch den entsprechenden POI an. Der PointOfInterest
enthält die Breiten-/Längenkoordinaten, die Orts-ID und den POI-Namen.
POIs nicht mehr auf der Karte anzeigen
Sie können POIs ausblenden, indem Sie benutzerdefinierte Formate auf alle POIs oder auf bestimmte POI-Kategorien anwenden.
Mit der folgenden JSON-Stildeklaration werden alle Unternehmens-POIs auf der Karte ausgeblendet:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Als weiteres Beispiel vereinfacht die folgende Deklaration die Darstellung aller POI-Kategorien:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Den Java-Code sowie weitere Informationen finden Sie in der Anleitung Kartenelemente mit Stilen ausblenden.