Я пытаюсь создать интерактивную карту, которая визуализирует определенные данные.Как удалить метку листка, когда слой topojson, содержащий его, удаляется
Я использовал карту буклетов и слой сверху. Затем я попытался добавить статические метки на каждом из топологических многоугольников, используя плагин labellet label, т. Е. Метки всегда должны быть там и не должны реагировать на событие mouseover.
Я пробовал реализовать метод bindLabel()
с noHide:true
, но он не работал. Поэтому я внедрил решение, предоставленное на этот вопрос Simple label on a leaflet (geojson) polygon. Мне удалось добавить статические метки.
Тогда у меня есть функция, которая удаляет многоугольник topojson на событие click. Я должен был удалить ярлык на THAT PARTICGAL POLYGON ТОЛЬКО после его удаления, но я не могу это реализовать.
Вот что я сделал, чтобы добавить topojson слой и этикетки:
function addRegions(map) {
var regionLayer = new L.TopoJSON();
$.getJSON('region.topo.json').done(addRegionData);
function addRegionData(topoData) {
regionLayer.addData(topoData);
regionLayer.addTo(map);
regionLayer.eachLayer(addLabel);
regionLayer.eachLayer(handleLayer);
}
function handleLayer(layer) {
layer.on({
click: clickAction
});
}
// Here's the code for adding label
function addLabel(layer) {
var label = new L.Label();
label.setContent(layer.feature.properties.REGION);
label.setLatLng(layer.getBounds().getCenter());
map.showLabel(label);
}
// Here's the code that removes a polygon when it is clicked and retains the previously removed polygon
function clickAction(e) {
regionLayer.eachLayer(function(layer){
map.addLayer(layer);
});
var layer = e.target;
map.removeLayer(layer);
}
}
До сих пор этот код удаляет topojson многоугольник при щелчке, но этикетка все еще там.
Мне нужно удалить ярлык, который находится на этом конкретном полигоне, который удален, но сохраняйте метки на других полигонах.
Кроме того, при щелчке по другому полигону его следует удалить, но ранее удаленная метка должна быть сохранена, так как ранее удаленный многоугольник также сохраняется.
Я не могу, поскольку жизнь меня думает о том, как реализовать это. Пожалуйста, помогите мне.
сделайте ** область ** свойство, которое вы используете, поскольку ваш ярлык уникален для каждой функции или любой другой уникальной собственности в вашем топожионе, например ** ID **. – muzaffar
Этикетки не имеют уникального идентификатора, кроме их координат. Я проверил на консоли, я не думаю, что метки связаны с любым свойством topojson – jimmypage
, эти метки не будут иметь никакого свойства topojson, но сам topojson действительно обладает свойствами, такими как ** region **, является это уникальное или любое другое свойство topojson уникально? – muzaffar