Сделал карту помещений с помощью
leaflet.js, довольно приятная в работе вещь, но столкнулся с некоторыми трудностями при попытке создания своих "плюшек". Сейчас же хочу просить помощи на счёт создания "этажности".
Т.е. есть тайлы каждого этажа в отдельности, на каждом этаже есть точки(маркеры). Так вот нужно каким-либо образом сделать так, чтобы с изменением тайлов - менялись и точки.
Тайлы меняю через Control'ы вот так:
var mapAttribution = 'Attribiution',
mapOptions = {attribution: mapAttribution,noWrap: true,continuousWorld:false},
floor1 = 'map/1/{z}/{x}/{y}.jpg';
floor2 = 'map/2/{z}/{x}/{y}.jpg';
floor3= 'map/3/{z}/{x}/{y}.jpg';
floor4 = 'map/4/{z}/{x}/{y}.jpg';
floor5 = 'map/5/{z}/{x}/{y}.jpg';
floor6 = 'map/6/{z}/{x}/{y}.jpg';
var f1 = new L.TileLayer(floor1, mapOptions),
f2 = new L.TileLayer(floor2, mapOptions),
f3 = new L.TileLayer(floor3, mapOptions),
f4 = new L.TileLayer(floor4, mapOptions),
f5 = new L.TileLayer(floor5, mapOptions);
f6 = new L.TileLayer(floor6, mapOptions);
// ADD MAP
var map = new L.Map('map', {
dragging:false,
zoomControl:false,
touchZoom: false,
scrollWheelZoom: false,
doubleClickZoom:false,
layers: [f1],
}).setView([0, 0], 2);
// LAYER CONTROLS
var baseMaps = {
"Первый этаж": f1,
"Второй этаж": f2,
"Третий этаж": f3,
"Четвертый этаж": f4,
"Пятый этаж": f5,
"Шестой этаж": f6
};
layersControl = new L.Control.Layers(baseMaps);
map.addControl(layersControl);
У карты появляется control, который имеет в себе чекбоксы, но при этом у них не меняется атрибут checked, т.е. при клике - тайл меняется, точка чекбокса стоит уже на другом элементе, но checked остается всё равно у нулевого элемента. Поэтому через
$('input[name=***][checked]')
получаем всегда первый элемент, несмотря на то, что тайлы сменяются.
Решил отлавливать элемент повыше инпута, потому что каждый инпут пихался в label,
$('labelClass').click(...alert ($(this).index())...)
Но и это не сильно помогло, потому что она срабатывала постоянно - два раза, причем так будто я ещё раз кликнул на этот же label. Но и это ещё не всё,
точки то появляются, но не пропадают старые вот это основной вопрос.
В API от leaflet нету никакого метода для удаления всех точек разом и для удаления по отдельности. Внимание, фууф, вопрос: Как сделать так, чтобы при изменении тайла(перехода на другой этаж) я мог увидеть точки именно с этого этажа(т.е. удалить старые и получить новые)?