Организации и другие объекты на карте

По умолчанию объекты отображаются на базовой карте вместе с соответствующими им значками. К объектам относятся парки, школы, правительственные здания и прочее.

Кроме того, по умолчанию на карте появляются организации, если тип карты – normal. Организации – это магазины, рестораны, гостиницы т. п. Организации на схемах (планах) зданий отображаются только в упрощенном режиме.

Объект соответствует месту по определению в Places API. Например, парки отдыха относятся к объектам, а фонтаны, как правило, нет (кроме случаев, когда они имеют национальное или историческое значение).

Отслеживание событий кликов для объектов

Если вы хотите, чтобы приложение реагировало, когда пользователь касается объекта, примените OnPoiClickListener как показано в примере ниже:

public class OnPoiClickDemoActivity extends FragmentActivity
    implements OnMapReadyCallback, GoogleMap.OnPoiClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.poi_click_demo);

        SupportMapFragment 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(getApplicationContext(), "Clicked: " +
                        poi.name + "\nPlace ID:" + poi.placeId +
                        "\nLatitude:" + poi.latLng.latitude +
                        " Longitude:" + poi.latLng.longitude,
                Toast.LENGTH_SHORT).show();
    }
}

Объекты показываются на карте по умолчанию, но не существует стандартного интерфейса, отображаемого при нажатии на них. Поэтому API не отображает автоматически информационное окно или какой-либо иной элемент интерфейса, когда пользователь касается объекта.

Как показано в примере выше, на карте устанавливается прослушиватель OnPoiClickListener путем вызова метода GoogleMap.setOnPoiClickListener(OnPoiClickListener). Когда пользователь нажимает на объект (касается его), ваше приложение получает событие OnPoiClick(PointOfInterest), которое указывает на этот объект. Объект PointOfInterest содержит координаты широты и долготы, идентификатор места и название объекта на карте.

Отключение отображения объектов на карте

Скрыть объекты можно, применив настраиваемые стили ко всем ним или только к определенным категориям.

Следующая декларация стиля JSON скрывает все организации на карте:

[
  {
    "featureType": "poi.business",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]

Еще один пример. Этот код JSON упрощает отображение всех категорий объектов:

[
  {
    "featureType": "poi",
    "stylers": [
      { "visibility": "simplified" }
    ]
  }
]

Код Java и другие подробности вы можете найти в руководстве по скрытию объектов на карте с помощью стилей.