Leaflet(карта) + многослойность
Сделал карту помещений с помощью 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 нету никакого метода для удаления всех точек разом и для удаления по отдельности. Внимание, фууф, вопрос: Как сделать так, чтобы при изменении тайла(перехода на другой этаж) я мог увидеть точки именно с этого этажа(т.е. удалить старые и получить новые)? |
Часовой пояс GMT +3, время: 16:11. |