Domyślnie na mapie bazowej wyświetlają się ciekawe miejsca wraz z odpowiadającymi im ikonami. Obejmują one parki, szkoły, budynki administracji państwowej i inne.
Dodatkowo biznesowe ważne miejsca są domyślnie wyświetlane na mapie, gdy jej typ to normal
. Punkty POI firm to np. sklepy, restauracje, hotele itp. Punkty POI firm na mapach budynków (planach pięter) pojawiają się tylko na mapie w trybie uproszczonym.
Punkt POI odpowiada identyfikatorowi miejsca zdefiniowanemu w pakiecie SDK Miejsc na Androida. Na przykład parki rekreacyjne są punktami POI, ale takie obiekty jak fontanny zwykle nie są punktami POI (chyba że mają znaczenie krajowe lub historyczne).
Nasłuchiwanie zdarzeń kliknięcia w przypadku ważnych miejsc
Jeśli chcesz reagować, gdy użytkownik kliknie punkt 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(); } }
Ciekawe miejsca są domyślnie widoczne na mapie, ale nie ma domyślnego interfejsu użytkownika po kliknięciu. Oznacza to, że gdy użytkownik kliknie punkt POI, interfejs API nie wyświetli automatycznie okna informacyjnego ani żadnego innego interfejsu.
Jak widać na powyższym przykładzie, element OnPoiClickListener
na mapie ustawia się, wywołując funkcję GoogleMap.setOnPoiClickListener(OnPoiClickListener)
.
Gdy użytkownik kliknie (dotknie) punkt POI, Twoja aplikacja otrzyma zdarzenie OnPoiClick(PointOfInterest)
, które wskazuje kliknięty punkt POI. Element PointOfInterest
zawiera współrzędne geograficzne, identyfikator miejsca i nazwę ważnego miejsca.
Przestań wyświetlać ciekawe miejsca na mapie
Możesz ukrywać punkty orientacyjne, stosując style niestandardowe do wszystkich punktów orientacyjnych lub do określonych kategorii punktów orientacyjnych.
Poniższa deklaracja stylu JSON ukrywa wszystkie punkty POI firm na mapie:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Inny przykład: poniższy kod JSON upraszcza wyświetlanie wszystkich kategorii punktów POI:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Kod w języku Java i inne szczegóły znajdziesz w przewodniku po ukrywaniu elementów mapy za pomocą stylów.