Domyślnie na mapie podstawowej wyświetlają się ważne miejsca (POI) wraz z odpowiadającymi im ikonami. Ważne miejsca to m.in. parki, szkoły i budynki rządowe.
Dodatkowo, gdy typ mapy to normal, domyślnie wyświetlają się biznesowe ważne miejsca. Biznesowe ważne miejsca to m.in. sklepy, restauracje i hotele. Biznesowe ważne miejsca na mapach wnętrz (rzutach pięter) wyświetlają się tylko w
trybie uproszczonym.
Ważne miejsce odpowiada identyfikatorowi miejsca Place ID zdefiniowanemu w pakiecie SDK Miejsc na Androida. Na przykład parki rekreacyjne są ważnymi miejscami, ale fontanny zwykle nie (chyba że mają znaczenie historyczne lub są zabytkami).
Nasłuchiwanie zdarzeń kliknięcia ważnych miejsc
Jeśli chcesz reagować, gdy użytkownik kliknie ważne miejsce, możesz użyć metody
OnPoiClickListener, jak pokazano w tym przykładzie kodu:
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(); } }
Ważne miejsca wyświetlają się na mapie domyślnie, ale nie ma domyślnego interfejsu użytkownika po kliknięciu. Oznacza to, że gdy użytkownik kliknie ważne miejsce, interfejs API nie wyświetli automatycznie okna informacyjnego ani żadnego innego interfejsu użytkownika.
Jak widać w powyższym przykładzie, metodę
OnPoiClickListener ustawiasz na mapie, wywołując
calling
GoogleMap.setOnPoiClickListener(OnPoiClickListener).
Gdy użytkownik kliknie ważne miejsce, Twoja aplikacja otrzyma zdarzenie
OnPoiClick(PointOfInterest) wskazujące ważne miejsce, które użytkownik kliknął. Obiekt
PointOfInterest zawiera współrzędne geograficzne,
identyfikator miejsca i nazwę ważnego miejsca.
Wyłączanie wyświetlania ważnych miejsc na mapie
Możesz ukryć ważne miejsca, stosując style niestandardowe do wszystkich ważnych miejsc lub do określonych kategorii ważnych miejsc.
Ta deklaracja stylu JSON ukrywa wszystkie biznesowe ważne miejsca na mapie:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Inny przykład: ten kod JSON upraszcza wyświetlanie wszystkich kategorii ważnych miejsc:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Kod w języku Java i inne szczegóły znajdziesz w przewodniku Ukrywanie elementów mapy za pomocą stylów.