Класс Rectangle в Leaflet представляет собой слой прямоугольной географической области, ограниченной двумя координатами: юго-западной и северо-восточной точками. Внутри библиотеки он является частным случаем полигона и наследует поведение от абстракции Path, что обеспечивает поддержку стилизации, событий и интерактивности.
Прямоугольник в Leaflet определяется через объект границ:
Эти две точки формируют объект LatLngBounds, который
является основой для создания прямоугольника.
Ключевая особенность модели заключается в том, что Rectangle не хранит массив вершин, как Polygon, а вычисляет их автоматически на основе границ.
Основной способ создания — фабричная функция
L.rectangle.
const bounds = [
[55.75, 37.50],
[55.80, 37.70]
];
const rect = L.rectangle(bounds);
rect.addTo(map);
Альтернативная форма использует явный LatLngBounds:
const bounds = L.latLngBounds(
L.latLng(55.75, 37.50),
L.latLng(55.80, 37.70)
);
const rect = L.rectangle(bounds);
rect.addTo(map);
Rectangle принимает те же стилистические параметры, что и Path-объекты:
const rect = L.rectangle(bounds, {
color: "#3388ff",
weight: 2,
opacity: 0.8,
fillOpacity: 0.2,
dashArray: "5, 10"
});
Основные параметры:
color — цвет обводкиweight — толщина линииopacity — прозрачность границыfillColor — цвет заливкиfillOpacity — прозрачность заливкиdashArray — пунктирный стиль линииПозволяет полностью изменить географические границы прямоугольника:
rect.setBounds([
[55.76, 37.52],
[55.82, 37.72]
]);
При вызове происходит пересчёт всех вершин и перерисовка слоя.
Возвращает текущие границы объекта:
const currentBounds = rect.getBounds();
Результатом является экземпляр LatLngBounds, который
можно использовать для масштабирования карты или анализа области.
Rectangle поддерживает стандартные события слоя:
rect.on("click", (e) => {
console.log("Клик по прямоугольнику", e.latlng);
});
rect.on("mouseover", () => {
rect.setStyle({ fillOpacity: 0.4 });
});
rect.on("mouseout", () => {
rect.setStyle({ fillOpacity: 0.2 });
});
События наследуются от Interactive layer, что делает
возможным полноценное взаимодействие с пользователем.
Rectangle наследует поведение по цепочке:
Это означает, что:
addTo, remove,
removeFromsetStyleПосле инициализации стиль можно изменять динамически:
rect.setStyle({
color: "red",
weight: 3,
fillOpacity: 0.5
});
Метод setStyle применяется мгновенно без пересоздания
объекта.
Rectangle часто используется совместно с автоматическим масштабированием:
map.fitBounds(rect.getBounds());
Такой подход позволяет центрировать карту строго по области прямоугольника.
При работе с координатами учитываются особенности географической системы:
Rectangle применяется для:
Rectangle легко конвертируется в GeoJSON-совместимую структуру через полигональную модель:
const geo = rect.toGeoJSON();
Результат соответствует типу Polygon, поскольку
прямоугольник в геометрическом смысле является частным случаем
многоугольника.
Несмотря на простоту, Rectangle имеет ряд особенностей:
Rectangle является одним из наиболее лёгких в отрисовке слоёв благодаря:
Это делает его предпочтительным для задач массового отображения зон.
При изменении масштаба карты координаты прямоугольника пересчитываются автоматически. Визуальная форма сохраняется за счёт проекционной трансформации, а не геометрической переработки.
Rectangle может комбинироваться с:
При наложении слоёв учитывается порядок z-index, задаваемый через
bringToFront и bringToBack.