gpt4 book ai didi

javascript - Leaflet:删除 'moveend'命令后的层,然后重新添加同一层

转载 作者:行者123 更新时间:2023-12-03 05:31:59 25 4
gpt4 key购买 nike

如何在“moveend”命令后删除图层,然后重新添加同一图层?

详细信息:

我想使用 getJSON 在 MySQL 的传单中添加超过 60,000 个点。考虑到大量的点,我只想显示 BBOX 中的点。首先发送MySQL中的BBOX坐标:

map.on('moveend', function() { 
$.ajax({
type: "POST",
url: "storeCoordinateBBOX.php",
data: { sjever: map.getBounds()._northEast.lat, jug: map.getBounds()._southWest.lat, zapad: map.getBounds()._southWest.lng, istok: map.getBounds()._northEast.lng}
}).done(function( msg ) {
//alert( msg );
});
});

然后仅选择位于 BBOX 内的点。

PHP(get_address.php)

$sql = "SELECT objectid, ulica, kb, ( Y(SHAPE)) AS lat, ( X(SHAPE)) AS lng FROM bl_tacke_adrese WHERE ( Y(SHAPE) ) > $jug AND ( Y(SHAPE) ) < $sjever AND ( X(SHAPE) ) > $zapad AND ( X(SHAPE) ) < $istok;";

之后,将选定的数据添加到传单中:

address = new L.LayerGroup();
[...]

function getUsers_ostalo() {
map.on('moveend', function(){
// map.removeLayer(address) ;
$.getJSON("get_address.php", function podaci(data) {
for (var i = 0; i < data.length; i++) {
var location = new L.LatLng(data[i].lat, data[i].lng);
var objectid = "<div style='font-size: 12px; text-align: left; margin-left: auto; margin-right: auto;'><b style='font-size: 12px;'>ID Lokacije: </b>"+ data[i].objectid +"</div>";
var ulica = "<div style='font-size: 12px; text-align: left; margin-left: auto; margin-right: auto;'><b style='font-size: 12px; text-align: left;'>Ulica: </b>"+ data[i].ulica +"</div>";
var kb = "<div style='font-size: 12px; text-align: left; margin-left: auto; margin-right: auto;'><b style='font-size: 12px; text-align: left;'>Kb: </b>"+ data[i].kb +"</div>";

var marker = new L.Marker(location, {
title: data[i].tipovi,
icon: ostalo_icon
});
marker.bindPopup("<div>"+ objectid + ulica + kb + "</div>", {maxWidth: '400', maxHeight: '400'});
marker.addTo(address);
}
})
});
}

这一切都工作正常。问题是,当移动 map 添加了新点但没有删除已经存在的点(加载了先前的移动 map )。我希望每次移动 map 时先清理 map (removeLayer),然后再次添加相同的图层。那可能吗?我尝试过插入“map.removeLayer(地址);”在 'map.on ('Moveendi', function () {...' 之后删除图层并且不会将其添加回来。

最佳答案

本地图开始移动时清除图层:

map.on("movestart", function() {
address.clearLayers();
});

比移动结束时添加新标记:

map.on("moveend", function() {
// ..
marker.addTo(address);
});

关于javascript - Leaflet:删除 'moveend'命令后的层,然后重新添加同一层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40904796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com