Контрол полноэкранного режима (Fullscreen Control) позволяет переводить карту в режим отображения на весь экран браузера. После активации пользователь получает больше пространства для работы с картой, что особенно важно при просмотре крупных территорий, маршрутов, кластеров маркеров и детализированных геоданных.
В интерфейсе Google Maps JavaScript API кнопка полноэкранного режима отображается как стандартный элемент управления картой и интегрируется в общую систему контролов.
Основные преимущества использования полноэкранного режима:
По умолчанию контрол полноэкранного режима обычно включён на
большинстве современных устройств и браузеров, поддерживающих Fullscreen
API. Для явного включения используется параметр
fullscreenControl.
const map = new google.maps.Map(
document.getElementById("map"),
{
center: {
lat: 55.7558,
lng: 37.6176
},
zoom: 10,
fullscreenControl: true
}
);
В данном примере кнопка перехода в полноэкранный режим будет отображаться на карте независимо от других настроек управления.
Если полноэкранный режим не требуется, контрол можно скрыть.
const map = new google.maps.Map(
document.getElementById("map"),
{
center: {
lat: 55.7558,
lng: 37.6176
},
zoom: 10,
fullscreenControl: false
}
);
После установки значения false кнопка исчезает из
интерфейса карты.
Подобный подход применяется в случаях, когда:
Как и большинство встроенных элементов Google Maps JavaScript API, контрол полноэкранного режима может быть размещён в различных областях карты.
Для этого используется свойство
fullscreenControlOptions.
const map = new google.maps.Map(
document.getElementById("map"),
{
center: {
lat: 55.7558,
lng: 37.6176
},
zoom: 10,
fullscreenControl: true,
fullscreenControlOptions: {
position: google.maps.ControlPosition.TOP_LEFT
}
}
);
В приведённом примере кнопка будет расположена в левом верхнем углу карты.
Для размещения контрола используются значения перечисления
google.maps.ControlPosition.
Наиболее распространённые варианты:
google.maps.ControlPosition.TOP_LEFT
google.maps.ControlPosition.TOP_CENTER
google.maps.ControlPosition.TOP_RIGHT
google.maps.ControlPosition.LEFT_TOP
google.maps.ControlPosition.RIGHT_TOP
google.maps.ControlPosition.BOTTOM_LEFT
google.maps.ControlPosition.BOTTOM_CENTER
google.maps.ControlPosition.BOTTOM_RIGHT
Пример размещения в правом нижнем углу:
fullscreenControlOptions: {
position: google.maps.ControlPosition.BOTTOM_RIGHT
}
При проектировании интерфейса следует учитывать расположение остальных контролов, чтобы избежать наложения элементов друг на друга.
Ниже приведён пример карты с активированным полноэкранным режимом и пользовательским расположением кнопки.
<!DOCTYPE html>
<html>
<head>
<title>Fullscreen Control</title>
<style>
#map {
width: 100%;
height: 500px;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
function initMap() {
const map = new google.maps.Map(
document.getElementById("map"),
{
center: {
lat: 59.9386,
lng: 30.3141
},
zoom: 12,
fullscreenControl: true,
fullscreenControlOptions: {
position: google.maps.ControlPosition.TOP_LEFT
}
}
);
}
</script>
<script
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
async
defer>
</script>
</body>
</html>
После нажатия на кнопку карта будет развёрнута на весь экран браузера. Повторное нажатие возвращает её к исходным размерам.
Контрол Google Maps фактически использует возможности Fullscreen API, встроенного в браузер.
При переходе в полноэкранный режим браузер:
С точки зрения разработчика никаких дополнительных действий обычно не требуется.
Работа контрола зависит от поддержки браузером стандарта Fullscreen API.
На современных версиях браузеров поддержка присутствует:
На некоторых мобильных устройствах поведение может отличаться из-за ограничений операционной системы или встроенного браузера.
Если браузер не поддерживает полноэкранный режим, контрол может быть скрыт автоматически.
При необходимости можно самостоятельно проверить наличие поддержки Fullscreen API.
if (document.fullscreenEnabled) {
console.log("Полноэкранный режим поддерживается");
} else {
console.log("Полноэкранный режим недоступен");
}
Такую проверку иногда используют для условного отображения пользовательских элементов управления.
Полноэкранный режим не конфликтует со стандартными контролами Google Maps.
Он может использоваться совместно с:
Пример конфигурации:
const map = new google.maps.Map(
document.getElementById("map"),
{
zoomControl: true,
mapTypeControl: true,
scaleControl: true,
streetViewControl: true,
rotateControl: true,
fullscreenControl: true
}
);
После разворачивания карты все активные элементы управления продолжают работать в штатном режиме.
На смартфонах полноэкранный режим особенно полезен из-за ограниченного размера экрана.
Преимущества:
Однако необходимо учитывать, что разные мобильные браузеры могут реализовывать полноэкранный режим по-разному.
При использовании адаптивного интерфейса контейнер карты часто имеет относительные размеры.
Например:
#map {
width: 100%;
height: 60vh;
}
После перехода в полноэкранный режим Google Maps автоматически изменяет размеры контейнера, а при выходе возвращает исходные параметры.
Поэтому дополнительные обработчики изменения размеров обычно не требуются.
Полноэкранный режим можно использовать одновременно с собственными элементами управления.
Пример создания пользовательской панели:
const customControl = document.createElement("button");
customControl.textContent = "Мои объекты";
map.controls[
google.maps.ControlPosition.TOP_LEFT
].push(customControl);
При разворачивании карты в полноэкранный режим пользовательский контрол остаётся доступным, поскольку входит в структуру интерфейса карты.
Иногда требуется выполнять действия при входе или выходе из полноэкранного режима.
Для этого используется событие браузера
fullscreenchange.
document.addEventListener(
"fullscreenchange",
() => {
if (document.fullscreenElement) {
console.log("Полноэкранный режим включён");
} else {
console.log("Полноэкранный режим выключен");
}
}
);
Подобный механизм полезен для:
Несмотря на простоту использования, существуют определённые ограничения.
Функциональность определяется поддержкой Fullscreen API конкретным браузером.
Некоторые мобильные приложения используют встроенные браузерные компоненты (WebView), в которых полноэкранный режим может работать неполностью либо быть отключён.
Отдельные корпоративные среды и специализированные браузеры могут ограничивать работу полноэкранного режима.
Поведение Safari на iOS и браузеров Android может отличаться по отображению системных элементов интерфейса.
Размещать кнопку рядом с элементами навигации.
Пользователь ожидает увидеть её рядом с контролами масштабирования и переключения типов карты.
Использовать полноэкранный режим для насыщенных картографических интерфейсов.
Особенно это актуально для:
Не отключать контрол без необходимости.
Полноэкранный режим является привычной функцией большинства современных картографических сервисов.
Проверять работу на мобильных устройствах.
Даже при одинаковом коде особенности реализации Fullscreen API могут отличаться между платформами и браузерами.
Учитывать расположение остальных контролов.
Грамотно организованная компоновка интерфейса делает работу с картой значительно удобнее и уменьшает вероятность визуальных конфликтов между элементами управления.