Ich versuche eine interaktive Karte zu erstellen, die bestimmte Daten visualisiert.So entfernen Sie eine Leaflet-Beschriftung, wenn eine Topojson-Ebene, die sie enthält, entfernt wird
Ich verwendete Flugblatt-Karte und eine Topojson-Schicht darauf. Als nächstes versuchte ich, statische Etiketten auf jedem der Topojson-Polygone unter Verwendung eines Broschüren-Etikett-Plugins hinzuzufügen, d. H. Die Etiketten sollten immer da sein und sollten nicht auf ein Mouseover-Ereignis reagieren.
Ich versuchte bindLabel()
Methode mit noHide:true
zu implementieren, aber es schien nicht zu funktionieren. Daher habe ich die zu dieser Frage bereitgestellte Lösung implementiert Simple label on a leaflet (geojson) polygon. Es ist mir gelungen, statische Labels hinzuzufügen.
Dann habe ich eine Funktion, die ein Topojson-Polygon beim Klick-Ereignis entfernt. Ich sollte das Etikett auf DIESEM BESTIMMTEN POLYGON NUR entfernen, nachdem es entfernt wurde, aber ich kann nicht scheinen, das zu implementieren.
Hier ist, was ich tat topojson Schicht und Etiketten hinzuzufügen:
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);
}
}
Bisher dieser Code entfernt das topojson Polygon, wenn es angeklickt wird, aber das Label ist immer noch da.
Ich muss die Beschriftung entfernen, die auf dem bestimmten Polygon ist, das entfernt wird, aber die Beschriftungen auf anderen Polygonen behalten.
Wenn das andere Polygon angeklickt wird, sollte es entfernt werden, aber die zuvor entfernte Beschriftung sollte beibehalten werden, da das zuvor entfernte Polygon ebenfalls beibehalten wird.
Ich kann nicht für das Leben von mir darüber nachdenken, wie das zu implementieren ist. Bitte hilf mir.
machen Sie die ** Region ** Eigenschaft, in der Sie verwenden, da Ihr Etikett für jedes Merkmal einzigartig ist oder irgendeine andere einzigartige Eigenschaft in Ihrem topojson wie ** ID ** existiert. – muzaffar
Die Labels haben keine eindeutige ID außer ihren Koordinaten. Ich habe an der Konsole überprüft, ich glaube nicht, dass die Etiketten mit einer der Topojson-Eigenschaft – jimmypage
natürlich verbunden sind, die Etiketten werden keine Topojson-Eigenschaft haben, aber die Topojson selbst haben Eigenschaften wie die ** Region **, ist es einzigartig oder eine andere Topojson-Eigenschaft ist einzigartig? – muzaffar