В Google Maps JavaScript API предусмотрена система стандартных элементов управления картой (UI controls), включающая масштабирование, переключение типа карты, Street View, полноэкранный режим и другие компоненты интерфейса. При разработке кастомных картографических решений часто требуется полный контроль над интерфейсом, что приводит к необходимости отключения стандартных элементов управления.
Основной механизм управления UI реализуется через параметры объекта конфигурации карты при инициализации.
Для удаления всех встроенных элементов управления используется
параметр disableDefaultUI:
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 40.7128, lng: -74.0060 },
zoom: 10,
disableDefaultUI: true
});
При установке disableDefaultUI: true отключаются все
стандартные контролы одновременно, включая масштаб, переключатель типов
карт, Street View и другие элементы интерфейса.
Такой подход применяется в случаях, когда интерфейс полностью заменяется кастомными компонентами, либо карта используется как визуальный слой без интерактивных элементов управления.
Вместо полного отключения UI часто требуется более тонкая настройка, при которой сохраняются только необходимые элементы.
Каждый контрол может быть отключён отдельно через соответствующие параметры:
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 48.8566, lng: 2.3522 },
zoom: 12,
zoomControl: false,
mapTypeControl: false,
streetViewControl: false,
fullscreenControl: false
});
zoomControl — управление отображением кнопок увеличения
и уменьшения масштабаmapTypeControl — переключение между режимами карты
(roadmap, satellite и др.)streetViewControl — включение элемента Pegman для
Street ViewfullscreenControl — кнопка полноэкранного режимаrotateControl — управление поворотом карты (актуально
для наклонённых и 3D-режимов)Такой подход позволяет формировать минималистичный интерфейс без полной потери функциональности.
Помимо отключения контролов, важную роль играет настройка поведения взаимодействия с картой.
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 51.5074, lng: -0.1278 },
zoom: 11,
gestureHandling: "none"
});
Параметр gestureHandling определяет, как карта реагирует
на пользовательские действия:
auto — поведение по умолчанию в зависимости от
устройстваgreedy — перехват всех жестов прокрутки и
масштабированияcooperative — прокрутка страницы при одном пальце,
масштабирование с модификаторомnone — полное отключение жестового управленияВ реальных проектах отключение стандартных контролов часто комбинируется с частичной кастомизацией интерфейса.
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 35.6895, lng: 139.6917 },
zoom: 13,
disableDefaultUI: false,
zoomControl: true,
mapTypeControl: false,
streetViewControl: false,
fullscreenControl: true,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
}
});
Даже при включённых стандартных элементах возможно управление их
расположением через ControlPosition:
TOP_LEFTTOP_RIGHTLEFT_TOPRIGHT_BOTTOMBOTTOM_CENTERПеремещение контролов используется при интеграции карты в сложные интерфейсы, где важно избегать перекрытия с собственными UI-элементами приложения.
Отключение UI-элементов не влияет на базовую функциональность рендеринга карты. Слои, маркеры и геометрия продолжают работать независимо от состояния интерфейса управления.
Однако важно учитывать, что:
scrollwheel)Полноэкранный режим может быть отключён или заменён собственной логикой:
fullscreenControl: false
При этом переход в полноэкранный режим может быть реализован вручную через Fullscreen API браузера, что часто используется в интерфейсах с нестандартным дизайном.
Для создания «чистой» карты без интерфейсных элементов используется комбинация параметров:
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: 55.7558, lng: 37.6173 },
zoom: 10,
disableDefaultUI: true,
gestureHandling: "greedy"
});
Такая конфигурация характерна для:
На мобильных платформах стандартный UI адаптируется автоматически, даже при частичном отключении контролов. Например:
Эти особенности следует учитывать при проектировании минималистичных картографических интерфейсов, чтобы избежать дублирования функций между кастомными элементами и встроенными контролами.
После отключения стандартного UI часто внедряются собственные
элементы управления через map.controls:
const controlDiv = document.createElement("div");
controlDiv.innerHTML = "<button>Zoom In</button>";
map.controls[google.maps.ControlPosition.TOP_LEFT].push(controlDiv);
Такой подход позволяет полностью заменить стандартный интерфейс на специализированный, адаптированный под конкретную задачу приложения.