JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://api-maps.yandex.ru/2.1/?lang=ru_RU"></script>
<h2>Выделение группы меток прямоугольником. Щелкните по карте для создания зоны. Щелкните повторно для окончания выделения</h2>
<div id="map" style="width:600px;height:400px"></div>
JavaScript
// Как только будет загружен API и готов DOM, выполняем инициализацию
ymaps.ready(init);
function init () {
var myMap = new ymaps.Map("map", {
center: [55.76, 37.64],
zoom: 10
}),
// Получаем границы области показа карты: координаты левого верхнего и правого нихнего углов
bounds = myMap.getBounds(),
myCollection = new ymaps.GeoObjectCollection(), // коллекция для всех меток
SelCollection = new ymaps.GeoObjectCollection(); // коллекция для выделенных меток
// Функция, генерирующая координаты метки случайным образом
function getRandomCoordinates (maxLatitude, minLatitude, maxLongitude, minLongitude) {
return [Math.random() * (maxLatitude - minLatitude) + minLatitude, Math.random() * (maxLongitude - minLongitude) + minLongitude];
}
// Создаём метки в видимой области карты (50 штук),
// и добавляем в общую коллекцию
for (var i = 0, l = 50; i < l; i++) {
var point = getRandomCoordinates(bounds[0][0], bounds[1][0], bounds[0][1], bounds[1][1]),
myPlacemark = new ymaps.Placemark(point, {
// Свойства.
// Текст метки.
iconContent: i + 1
}, {
preset: "twirl#blueIcon"
});
// Добавляем метку в коллекцию
myCollection.add(myPlacemark);
}
// Добавляем коллекции на карту
myMap.geoObjects.add(myCollection);
myMap.geoObjects.add(SelCollection);
SelectionBox= new ymaps.Rectangle([[55.76, 37.64],[55.76, 37.64]]); // готовим выделяющий прямоугольник, но пока не показываем
SelectionBox.options.set({"strokeColor":"#0000ff", "fillColor":"#0000ff", "fillOpacity":0.2,...