Domyślnie ciekawe miejsca (POI) są wyświetlane na mapie podstawowej wraz z ich odpowiadające im ikony. Ciekawe miejsca to między innymi parki, szkoły, budynki rządowe i innych.
Dodatkowo ciekawe miejsca firmowe wyświetlają się na mapie domyślnie, jeśli jej typ 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 rozrywki to ważne miejsca, ale takie jak fontanny wodne na ogół nie są ważnym miejscem (chyba że są to obiekty krajowe, czy znaczenia historycznego).
Nasłuchiwanie zdarzeń kliknięcia w ważnych miejscach
Jeśli chcesz odpowiedzieć użytkownikowi, który kliknie ciekawe miejsce, możesz użyć przycisku
OnPoiClickListener
jak w tym kodzie
przykład:
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. To znaczy, interfejs API nie wyświetla automatycznie okna informacyjnego ani żadnego innego użytkownika po kliknięciu ciekawego miejsca.
Jak widać w przykładzie powyżej,
OnPoiClickListener
na mapie o
połączenia
GoogleMap.setOnPoiClickListener(OnPoiClickListener)
Gdy użytkownik kliknie punkt zainteresowania, aplikacja otrzymuje zdarzenie OnPoiClick(PointOfInterest)
, które wskazuje kliknięty przez użytkownika punkt zainteresowania.
PointOfInterest
zawiera współrzędne szerokości i długości geograficznej,
identyfikator i nazwa ciekawego miejsca.
Zablokuj wyświetlanie punktów POI na mapie
Ciekawe miejsca możesz ukryć, stosując style niestandardowe do wszystkich ważnych miejsc lub do określonych kategorii ciekawych miejsc.
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 to następujący kod JSON, który upraszcza wyświetlanie wszystkich kategorii. ciekawych miejsc:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Więcej informacji o kodzie Java i innych znajdziesz w przewodniku ukrywanie elementów mapy za pomocą stylu.