По умолчанию точки интереса (POI) отображаются на базовой карте вместе с соответствующими значками. POI включают парки, школы, правительственные здания и многое другое.
Кроме того, бизнес -объекты появляются на карте по умолчанию, если карта имеет normal
тип. Деловые POI представляют такие предприятия, как магазины, рестораны, гостиницы и т. д. Деловые объекты на картах помещений (планах этажей) отображаются только на карте в упрощенном режиме .
POI соответствует идентификатору места , определенному в Places SDK для Android. Например, парки отдыха являются POI, но такие вещи, как фонтаны, как правило, не являются POI (если только они не имеют национального или исторического значения).
Прослушивание событий кликов на POI
Если вы хотите реагировать на нажатие пользователем POI, вы можете использовать OnPoiClickListener
, как показано в следующем примере кода:
Джава
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(); } }
Котлин
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() } }
POI отображаются на карте по умолчанию, но пользовательского интерфейса по умолчанию нет. То есть API не отображает автоматически информационное окно или любой другой пользовательский интерфейс, когда пользователь касается POI.
Как показано в приведенном выше примере, вы устанавливаете OnPoiClickListener
на карту, вызывая GoogleMap.setOnPoiClickListener(OnPoiClickListener)
. Когда пользователь щелкает (нажимает) на POI, ваше приложение получает событие OnPoiClick(PointOfInterest)
, указывающее точку интереса (POI), которую щелкнул пользователь. PointOfInterest
содержит координаты широты/долготы, идентификатор места и название точки интереса.
Запретить отображение POI на карте
Вы можете скрыть точки интереса (POI), применив пользовательские стили ко всем POI или к определенным категориям POI.
Следующее объявление в стиле JSON скрывает все бизнес-объекты на карте:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
В качестве другого примера следующий JSON упрощает отображение всех категорий POI:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Код Java и другие подробности см. в руководстве по сокрытию элементов карты с помощью стилей .