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.
Ponadto ważne miejsca związane z firmą są domyślnie wyświetlane na mapie, gdy typ mapy to normal
. Obiekty firmowe to m.in. sklepy, restauracje i hotele. Punkty orientacyjne 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ą zazwyczaj punktami orientacyjnymi (chyba że mają znaczenie narodowe lub historyczne).
Odbieranie zdarzeń kliknięcia punktów POI
Jeśli chcesz zareagować na kliknięcie przez użytkownika punktu POI, możesz użyć funkcji 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 informacyjnego 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.
Wyłączanie wyświetlania punktów POI na mapie
Możesz ukrywać punkty zainteresowania, stosując niestandardowe style do wszystkich punktów zainteresowania lub do określonych kategorii punktów zainteresowania.
Poniższa deklaracja stylu w formacie JSON ukrywa na mapie wszystkie punkty zainteresowania związane z firmą:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Ten kod JSON upraszcza wyświetlanie wszystkich kategorii punktów zainteresowania:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Kod Java i inne szczegóły znajdziesz w przewodniku Ukrywanie elementów mapy za pomocą stylów.