Domyślnie ciekawe miejsca (POI) są wyświetlane na mapie podstawowej wraz z odpowiadającymi im ikonami. Ważne miejsca to parki, szkoły, budynki rządowe i wiele innych.
Poza tym ważne miejsca biznesowe są domyślnie wyświetlane na mapie, jeśli typ mapy to normal
. Ważne miejsca biznesowe to m.in. sklepy, restauracje i hotele. Ważne miejsca biznesowe na mapach obiektów (planach pięter) są wyświetlane tylko na mapie w wersji uproszczonej.
Ciekawe miejsce odpowiada identyfikatorowi miejsca zdefiniowanemu w pakiecie SDK Miejsc na Androida. Np. parki rekreacyjne są ważnym miejscem, ale takie obiekty jak fontanny wodne zwykle nie są ważnym miejscem (chyba że mają znaczenie na poziomie krajowym lub historycznym).
Wykrywaj zdarzenia kliknięć ważnych miejsc
Jeśli chcesz odpowiedzieć użytkownikowi, który kliknie ważne miejsce, możesz użyć OnPoiClickListener
, jak 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(); } }
Ważne miejsca są domyślnie wyświetlane na mapie, ale po kliknięciu nie ma domyślnego interfejsu użytkownika. Oznacza to, że po kliknięciu ważnego miejsca interfejs API nie wyświetla automatycznie okna informacyjnego ani żadnego innego interfejsu użytkownika.
Jak widać w powyższym przykładzie, ustawiasz OnPoiClickListener
na mapie, wywołując GoogleMap.setOnPoiClickListener(OnPoiClickListener)
.
Gdy użytkownik kliknie ważne miejsce, aplikacja otrzyma zdarzenie OnPoiClick(PointOfInterest)
wskazujące kliknięte miejsce. PointOfInterest
zawiera współrzędne szerokości i długości geograficznej, identyfikator miejsca oraz nazwę ciekawego miejsca.
Wyłączanie wyświetlania ważnych miejsc na mapie
Możesz ukryć ciekawe miejsca, stosując style niestandardowe do wszystkich lub wybranych kategorii ważnych miejsc.
Poniższa deklaracja stylu JSON ukrywa wszystkie ważne miejsca biznesowe na mapie:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Innym przykładem jest ten JSON, aby uprościć wyświetlanie wszystkich kategorii ważnych miejsc:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Kod w Javie i inne informacje znajdziesz w przewodniku na temat ukrywania funkcji mapy ze stylem.