jquery - 使用 ajax 调用过滤数据时更新标记
问题描述
当过滤位置标记没有更新时,我遇到了问题,旧标记仍然存在,新标记不断添加到旧标记上。
我也使用过map.removeLayer()
,但似乎没有任何效果如果我在成功调用后使用此功能,它将始终删除标记。
$('#filter').click(function(){
$.ajax({
type:'GET',
url:"{{ url('filter-opportunities-grid') }}",
data: {
'status':status,
},
dataType:'json',
success:function(res){
var addressPoints = res[8];
if (markers != null) {
map.removeLayer(markers);
}
//Color according to types
var markers = L.markerClusterGroup();
for (var i = 0; i < addressPoints.length; i++) {
var a = addressPoints[i];
var title = a.title;
var due_date = a.due_date;
var type = a.type;
var address = a.url;
if(type==0) {
var marker = L.marker(new L.LatLng(a.lat,a.lng), { title: title, icon:red});
}
if(type==1) {
var marker = L.marker(new L.LatLng(a.lat,a.lng), { title: title, icon:orange});
}
if(type==2) {
var marker = L.marker(new L.LatLng(a.lat,a.lng), { title: title, icon:yellow});
}
if(type==3) {
var marker = L.marker(new L.LatLng(a.lat,a.lng), { title: title, icon:green});
}
if(type==4) {
var marker = L.marker(new L.LatLng(a.lat,a.lng), { title: title, icon:blue});
}
marker.bindPopup('<a class="text-info" href='+address+'><i class="fa fa-external-link" aria-hidden="true"></i> </a>'+title+'<br>Date de fin:'+due_date);
markers.addLayer(marker);
map.addLayer(markers);
}
}
})
}
解决方案
您是否尝试过在函数之外定义标记?
var markers = L.markerClusterGroup();
标记是否在调用以下内容的范围内?
if (markers != null) {
map.removeLayer(markers);
}
推荐阅读
- sql - 在语句 Oracle SQL 的情况下使用 IN 条件
- windows - 路径变量 Windows 10 - 未找到 Python
- r - make.keys 函数错误 `[<-`(`*tmp*`, abs(list.i), i, value = sign(list.i)) 中的错误:下标越界
- flutter - 是否可以从 Flutter 中的 firebase 集合创建 pdf?
- php - 通过 ftp 创建文件夹时避免特殊字符
- flutter - Flutter:onPressed 在按钮右侧显示文本
- laravel - Laravel Vue SPA Sourcemaps 未显示原始行
- hashicorp-vault - Vault 代理模板不呈现消息缺少依赖项:vault.write
- python - 在scrapy中从html获取多个类
- java - JAXB maven 插件不从 .wsdl 生成类