Стандартные контролы (Controls) — это встроенные элементы пользовательского интерфейса Google Maps JavaScript API, позволяющие управлять отображением карты без создания собственных кнопок и панелей. Они обеспечивают навигацию, изменение масштаба, переключение режимов отображения и другие действия.
Контролы автоматически размещаются поверх карты и адаптируются к различным размерам экрана. Большинство из них можно включать, отключать и перемещать в нужную область карты.
Все параметры контролов задаются через объект настроек карты при
создании экземпляра google.maps.Map либо изменяются позднее
через методы API.
Google Maps JavaScript API предоставляет несколько встроенных контролов:
| Контрол | Назначение |
|---|---|
| Zoom Control | Изменение масштаба |
| Map Type Control | Переключение типа карты |
| Street View Control | Переход в режим Street View |
| Fullscreen Control | Полноэкранный режим |
| Rotate Control | Вращение карты |
| Scale Control | Отображение масштаба |
| Camera Control | Управление камерой в векторных картах |
Каждый контрол имеет собственный набор настроек и может быть независимо активирован или деактивирован.
Любой стандартный контрол можно включить или выключить через параметры конфигурации карты.
Пример:
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 55.7558, lng: 37.6176 },
zoom: 10,
zoomControl: true,
mapTypeControl: true,
streetViewControl: true,
fullscreenControl: true
});
Для отключения конкретного контрола используется значение
false.
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 55.7558, lng: 37.6176 },
zoom: 10,
zoomControl: false,
streetViewControl: false
});
Иногда требуется полностью очистить интерфейс карты, например для создания собственного пользовательского интерфейса.
Для этого применяется параметр disableDefaultUI.
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 55.7558, lng: 37.6176 },
zoom: 10,
disableDefaultUI: true
});
После этого ни один встроенный контрол отображаться не будет.
Параметр disableDefaultUI можно комбинировать с
отдельными контролами.
Например, отключить всё и оставить только масштабирование.
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 55.7558, lng: 37.6176 },
zoom: 10,
disableDefaultUI: true,
zoomControl: true
});
Подобный подход часто применяется в корпоративных интерфейсах и административных панелях.
Zoom Control отвечает за изменение масштаба карты.
Пользователь может:
Обычно контрол отображается в виде кнопок «+» и «−».
const map = new google.maps.Map(document.getElementById("map"), {
zoomControl: true
});
const map = new google.maps.Map(document.getElementById("map"), {
zoomControl: false
});
Map Type Control позволяет переключать режим отображения карты.
Доступны следующие типы:
roadmap);satellite);hybrid);terrain).const map = new google.maps.Map(document.getElementById("map"), {
mapTypeControl: true
});
const map = new google.maps.Map(document.getElementById("map"), {
mapTypeId: "satellite"
});
const map = new google.maps.Map(document.getElementById("map"), {
mapTypeControlOptions: {
mapTypeIds: [
"roadmap",
"satellite"
]
}
});
В интерфейсе останутся только два варианта отображения.
Контрол поддерживает несколько визуальных представлений.
const map = new google.maps.Map(document.getElementById("map"), {
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR
}
});
Отображается в виде горизонтального набора кнопок.
const map = new google.maps.Map(document.getElementById("map"), {
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
}
});
Особенно полезен при ограниченном пространстве интерфейса.
Street View Control обеспечивает быстрый переход в панорамный режим просмотра улиц.
Через него пользователь может:
const map = new google.maps.Map(document.getElementById("map"), {
streetViewControl: true
});
const map = new google.maps.Map(document.getElementById("map"), {
streetViewControl: false
});
Fullscreen Control переводит карту в полноэкранный режим браузера.
Это особенно полезно:
const map = new google.maps.Map(document.getElementById("map"), {
fullscreenControl: true
});
const map = new google.maps.Map(document.getElementById("map"), {
fullscreenControl: false
});
Scale Control отображает линейку масштаба, показывающую реальное расстояние на текущем уровне увеличения.
Пример отображения:
200 м
500 футов
Контрол автоматически пересчитывает значение при изменении масштаба.
const map = new google.maps.Map(document.getElementById("map"), {
scaleControl: true
});
const map = new google.maps.Map(document.getElementById("map"), {
scaleControl: false
});
Rotate Control используется для вращения карты в режимах, поддерживающих изменение ориентации.
Наиболее востребован при работе:
const map = new google.maps.Map(document.getElementById("map"), {
rotateControl: true
});
const map = new google.maps.Map(document.getElementById("map"), {
rotateControl: false
});
В современных векторных картах Google Maps появляется Camera Control, позволяющий управлять:
Контрол особенно актуален для трёхмерного представления карты.
const map = new google.maps.Map(document.getElementById("map"), {
cameraControl: true
});
const map = new google.maps.Map(document.getElementById("map"), {
cameraControl: false
});
По умолчанию Google самостоятельно размещает контролы на карте. Однако практически любой контрол можно переместить.
Для этого используется перечисление
google.maps.ControlPosition.
Пример:
const map = new google.maps.Map(document.getElementById("map"), {
zoomControl: true,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
}
});
Google Maps предоставляет большое количество вариантов расположения.
Наиболее используемые:
google.maps.ControlPosition.TOP_LEFT
google.maps.ControlPosition.TOP_CENTER
google.maps.ControlPosition.TOP_RIGHT
google.maps.ControlPosition.LEFT_TOP
google.maps.ControlPosition.LEFT_CENTER
google.maps.ControlPosition.LEFT_BOTTOM
google.maps.ControlPosition.RIGHT_TOP
google.maps.ControlPosition.RIGHT_CENTER
google.maps.ControlPosition.RIGHT_BOTTOM
google.maps.ControlPosition.BOTTOM_LEFT
google.maps.ControlPosition.BOTTOM_CENTER
google.maps.ControlPosition.BOTTOM_RIGHT
Благодаря этому можно организовать интерфейс практически любой сложности.
const map = new google.maps.Map(document.getElementById("map"), {
zoomControlOptions: {
position: google.maps.ControlPosition.LEFT_CENTER
}
});
После загрузки карты кнопки масштабирования будут расположены слева.
const map = new google.maps.Map(document.getElementById("map"), {
mapTypeControlOptions: {
position: google.maps.ControlPosition.TOP_RIGHT
}
});
const map = new google.maps.Map(document.getElementById("map"), {
streetViewControlOptions: {
position: google.maps.ControlPosition.RIGHT_BOTTOM
}
});
Все контролы могут конфигурироваться в одном объекте.
const map = new google.maps.Map(document.getElementById("map"), {
center: {
lat: 55.7558,
lng: 37.6176
},
zoom: 12,
zoomControl: true,
mapTypeControl: true,
streetViewControl: true,
fullscreenControl: true,
scaleControl: true,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
},
mapTypeControlOptions: {
position: google.maps.ControlPosition.TOP_LEFT
},
streetViewControlOptions: {
position: google.maps.ControlPosition.RIGHT_BOTTOM
}
});
После создания карты настройки можно изменять через метод
setOptions().
Пример отключения Street View:
map.setOptions({
streetViewControl: false
});
Включение масштаба:
map.setOptions({
zoomControl: true
});
Изменение позиции:
map.setOptions({
zoomControlOptions: {
position: google.maps.ControlPosition.TOP_LEFT
}
});
const map = new google.maps.Map(document.getElementById("map"), {
disableDefaultUI: true,
zoomControl: true
});
Используется для лендингов и информационных страниц.
const map = new google.maps.Map(document.getElementById("map"), {
zoomControl: true,
fullscreenControl: true,
streetViewControl: true
});
Подходит для поиска маршрутов и геолокационных сервисов.
const map = new google.maps.Map(document.getElementById("map"), {
zoomControl: true,
scaleControl: true,
mapTypeControl: true
});
Часто применяется в GIS-системах и корпоративной аналитике.
const map = new google.maps.Map(document.getElementById("map"), {
mapTypeId: "satellite",
mapTypeControl: true,
zoomControl: true,
rotateControl: true
});
Позволяет эффективно работать со спутниковыми изображениями и пространственными данными.
Google Maps автоматически оптимизирует расположение контролов в зависимости от:
На мобильных устройствах часть контролов может менять расположение или внешний вид для повышения удобства взаимодействия.
При разработке интерфейсов рекомендуется учитывать возможность автоматической перестройки элементов и проверять отображение карты на различных разрешениях экрана.
Стандартные контролы могут использоваться одновременно с пользовательскими элементами интерфейса.
Например:
const customControl = document.createElement("button");
customControl.textContent = "Мой контрол";
map.controls[
google.maps.ControlPosition.TOP_CENTER
].push(customControl);
В результате на карте будут отображаться как встроенные элементы Google Maps, так и собственные элементы приложения.
Такой подход позволяет сочетать знакомый пользователям интерфейс Google Maps с уникальной функциональностью конкретного веб-приложения.