Полигоны в Google Maps JavaScript API представляют собой один из ключевых инструментов визуализации областей на карте. Они используются для отображения границ регионов, зон покрытия, территорий обслуживания, геозон (geofences), маршрутов произвольной формы и любых других замкнутых областей. Основой полигона является набор координатных точек, соединяемых последовательно линиями, образующими замкнутый контур.
Полигон в API описывается через объект
google.maps.Polygon, который принимает конфигурационный
объект с двумя основными компонентами:
pathsКаждая координата задаётся через google.maps.LatLng или
литерал { lat, lng }.
Массив paths может быть:
const polygon = new google.maps.Polygon({
paths: [
{ lat: 48.8566, lng: 2.3522 },
{ lat: 48.8600, lng: 2.3600 },
{ lat: 48.8530, lng: 2.3700 }
],
map: map
});
Даже без дополнительных параметров визуализации полигон отображается с дефолтными стилями: синяя обводка и полупрозрачная заливка.
Заливка определяет внутреннюю область полигона. Она управляется двумя ключевыми свойствами:
fillColor — цвет заливкиfillOpacity — прозрачность заливки (0.0–1.0)Цвет задаётся в формате HEX, RGB или именованных цветов CSS:
fillColor: "#FF0000"
или
fillColor: "rgba(255, 0, 0, 1)"
fillOpacity определяет визуальную плотность области:
fillOpacity: 0.35
Низкие значения применяются для сохранения видимости подложки карты, высокие — для выделения области как доминирующего элемента.
const polygon = new google.maps.Polygon({
paths: coordinates,
fillColor: "#4285F4",
fillOpacity: 0.4,
map: map
});
Обводка формирует контур полигона и играет ключевую роль в визуальном отделении области от фона.
Основные параметры:
strokeColor — цвет линииstrokeOpacity — прозрачность линииstrokeWeight — толщина линии в пикселяхstrokeColor: "#000000"
strokeOpacity: 0.8
strokeWeight: 2
Толщина напрямую влияет на читаемость границ при масштабировании карты: более тонкие линии подходят для больших территорий, более толстые — для локальных зон.
const polygon = new google.maps.Polygon({
paths: coordinates,
strokeColor: "#1A73E8",
strokeOpacity: 1,
strokeWeight: 3,
map: map
});
На практике заливка и обводка используются совместно для создания выразительных визуальных слоёв.
const polygon = new google.maps.Polygon({
paths: coordinates,
strokeColor: "#0B8043",
strokeOpacity: 0.9,
strokeWeight: 2,
fillColor: "#34A853",
fillOpacity: 0.25,
map: map
});
Такая комбинация позволяет:
Полигоны могут содержать внутренние вырезы, которые реализуются через вложенные массивы координат.
Структура:
const polygon = new google.maps.Polygon({
paths: [
outerPath,
innerPath
],
map: map
});
Где:
outerPath — внешний контурinnerPath — внутренний контур (исключаемая
область)const outerPath = [
{ lat: 50.0, lng: 30.0 },
{ lat: 50.0, lng: 31.0 },
{ lat: 49.0, lng: 31.0 },
{ lat: 49.0, lng: 30.0 }
];
const hole = [
{ lat: 49.7, lng: 30.4 },
{ lat: 49.7, lng: 30.6 },
{ lat: 49.5, lng: 30.6 },
{ lat: 49.5, lng: 30.4 }
];
const polygon = new google.maps.Polygon({
paths: [outerPath, hole],
strokeColor: "#000000",
strokeWeight: 2,
fillColor: "#FF0000",
fillOpacity: 0.3,
map: map
});
Такая структура используется для:
Стили полигона можно изменять после создания через методы
setOptions или отдельные сеттеры.
polygon.setOptions({
fillColor: "#F4B400",
fillOpacity: 0.5,
strokeWeight: 4
});
polygon.setOptions({ fillOpacity: 0.1 });
polygon.setOptions({ strokeColor: "#DB4437" });
Динамическое управление используется при:
Полигоны могут быть интерактивными, включая обработку событий:
clickmouseovermouseoutrightclickpolygon.addListener("click", (event) => {
console.log("Координаты клика:", event.latLng);
});
Интерактивность часто комбинируется с изменением fill/stroke для визуального отклика:
polygon.addListener("mouseover", () => {
polygon.setOptions({
fillOpacity: 0.6
});
});
polygon.addListener("mouseout", () => {
polygon.setOptions({
fillOpacity: 0.3
});
});
При работе с большим количеством полигонов важны следующие аспекты:
fillOpacity для многослойных
картПри масштабировании карты полигоны могут менять визуальное восприятие:
Для минимизации артефактов применяется:
При использовании нескольких контуров важно учитывать порядок их отрисовки:
Нарушение порядка может привести к некорректной интерпретации заливки и перекрытию областей.
const polygon = new google.maps.Polygon({
paths: coordinates,
strokeColor: "#2C3E50",
strokeOpacity: 0.9,
strokeWeight: 2,
fillColor: "#3498DB",
fillOpacity: 0.25,
clickable: true,
editable: false,
map: map
});
Параметры clickable и editable позволяют
управлять взаимодействием:
clickable: true — включение событийeditable: true — возможность редактирования вершин
пользователемПри включении режима редактирования пользователь может изменять:
Стили при этом остаются активными, но динамически обновляются в зависимости от новой геометрии.
Заливка и обводка часто используются для кодирования информации:
Такой подход позволяет строить многослойные карты без дополнительной графической перегрузки интерфейса