Domyślnie ciekawe miejsca (POI) wyświetlają się na mapie podstawowej wraz z odpowiednimi ikonami. Ciekawe miejsca to m.in. parki, szkoły, budynki administracyjne.
Dodatkowo ważne miejsca związane z firmą są domyślnie wyświetlane na mapie, gdy typ mapy to normal
. Obiekty firmowe to firmy takie jak sklepy, restauracje, hotele itp. Ważne miejsca firm na mapach wewnętrznych (planach pięter) są widoczne tylko na mapie w trybie uproszczonym.
Miejsce docelowe odpowiada identyfikatorowi miejsca zdefiniowanemu w pakiecie SDK Miejsc na Androida. Na przykład parki rekreacyjne są punktami orientacyjnymi, ale takie obiekty jak fontanny nie są zwykle punktami orientacyjnymi (chyba że mają znaczenie narodowe lub historyczne).
Nasłuchiwanie zdarzeń kliknięcia w przypadku ważnych miejsc
Jeśli chcesz reagować na kliknięcie przez użytkownika punktu POI, 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(); } }
Miejsca docelowe są domyślnie widoczne na mapie, ale nie ma domyślnego interfejsu po kliknięciu. Oznacza to, że interfejs API nie wyświetla automatycznie okna z informacjami ani żadnego innego interfejsu użytkownika, gdy użytkownik kliknie punkt zainteresowania.
Jak widać w powyższym przykładzie, możesz ustawić parametr OnPoiClickListener
na mapie, wywołując funkcję GoogleMap.setOnPoiClickListener(OnPoiClickListener)
.
Gdy użytkownik kliknie punkt zainteresowania, aplikacja otrzymuje zdarzenie OnPoiClick(PointOfInterest)
, które wskazuje kliknięty przez użytkownika punkt zainteresowania. Wartość PointOfInterest
zawiera współrzędne geograficzne, identyfikator miejsca i nazwę punktu zainteresowania.
Zablokuj wyświetlanie punktów POI na mapie
Możesz ukryć punkty zainteresowania, stosując niestandardowe style do wszystkich punktów zainteresowania lub do określonych kategorii punktów zainteresowania.
Poniższa deklaracja stylu JSON ukrywa na mapie wszystkie punkty zainteresowania związane z firmą:
[
{
"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 Java i inne szczegóły znajdziesz w przewodniku ukrywanie elementów mapy za pomocą stylów.