Выделение объектов
На карте можно выделить различные объекты: здания, дороги и так далее. Чтобы это сделать, нужно вызвать метод карты setSelectedObjects(), передав массив идентификаторов объектов, которые требуется подсветить.
map.setSelectedObjects([id1, id2]);
Идентификатор объекта можно получить, добавив обработчик события click
для карты (см. MapPointerEvent):
map.on('click', (e) => {
if (!e.target) {
return;
}
const { id } = e.target;
alert('Идентификатор объекта: ' + id);
});
Чтобы убрать выделение, нужно вызвать setSelectedObjects()
без параметров:
map.setSelectedObjects();
Ниже приведён демонстрационный пример. Нажмите на объект на карте, чтобы его выделить. Нажмите еще раз, чтобы убрать выделение.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2GIS Map API</title>
<meta name="description" content="An object selection example" />
<style>
html,
body,
#container {
margin: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
</style>
</head>
<body>
<div id="container"></div>
<script src="https://mapgl.2gis.com/api/js/v1"></script>
<script>
const map = new mapgl.Map('container', {
center: [55.308, 25.237],
zoom: 18,
key: 'Your API access key',
});
let selectedIds = [];
map.on('click', (e) => {
if (!e.target) {
return;
}
const { id } = e.target;
if (selectedIds.includes(id)) {
selectedIds = selectedIds.filter((i) => i !== id);
} else {
selectedIds.push(id);
}
map.setSelectedObjects(selectedIds);
});
</script>
</body>
</html>