Domyślnie ciekawe miejsca (POI) są wyświetlane na mapie podstawowej wraz z odpowiednimi ikonami. Ciekawe miejsca to między innymi parki, szkoły i budynki urzędowe.
Dodatkowo ciekawe miejsca firmowe wyświetlają się domyślnie na mapie, jeśli jej typ to normal
. Ciekawe miejsca dla firm to takie, jak sklepy, restauracje, hotele i inne. Ważne miejsca firm na mapach obiektów (planach pięter) są wyświetlane tylko w trybie uproszczonym.
Ciekawe miejsce odpowiada identyfikatorowi miejsca zdefiniowanemu w pakiecie SDK Miejsc na Androida. Na przykład parki rekreacyjne są ważnymi miejscami, ale tego typu fontanny zwykle nie stanowią ważnych miejsc (chyba że mają znaczenie krajowe lub historyczne).
Nasłuchiwanie zdarzeń kliknięcia w ważnych miejscach
Jeśli chcesz odpowiedzieć użytkownikowi, który kliknie ważne miejsce, możesz użyć OnPoiClickListener
, tak jak w tym przykładowym kodzie:
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(); } }
Ciekawe miejsca są domyślnie wyświetlane na mapie, ale nie ma żadnego domyślnego interfejsu uruchamianego po kliknięciu. Oznacza to, że po kliknięciu ważnego miejsca interfejs API nie wyświetla automatycznie okna informacyjnego ani innego interfejsu użytkownika.
Jak widać w przykładzie powyżej, ustawia się na mapie obiekt OnPoiClickListener
, wywołując funkcję GoogleMap.setOnPoiClickListener(OnPoiClickListener)
.
Gdy użytkownik kliknie ważne miejsce, aplikacja otrzyma zdarzenie OnPoiClick(PointOfInterest)
wskazujące to miejsce. Pole PointOfInterest
zawiera współrzędne szerokości i długości geograficznej, identyfikator miejsca i nazwę ciekawego miejsca.
Wyłączanie wyświetlania ciekawych miejsc na mapie
Ciekawe miejsca możesz ukrywać, stosując style niestandardowe do wszystkich ciekawych miejsc lub do ich określonych kategorii.
Poniższa deklaracja stylu JSON ukrywa wszystkie ważne miejsca związane z firmą na mapie:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Inny przykład następujący kod JSON upraszcza wyświetlanie wszystkich kategorii ciekawych miejsc:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Kod w Javie i inne informacje znajdziesz w przewodniku ukrywania funkcji mapy za pomocą stylu.