Javascript 传单ajax查询从PostGIS获取行加载时出现的问题
我的传单/Javascript代码有一个奇怪的问题。我正在尝试重构我的应用程序,该应用程序最初从PostGIS获取线条数据,因为选中了某个图层复选框: 然后它绑定了一些弹出窗口等。它工作正常,但每次都会收集所有复选框值,并通过ajax将其发送到PostGIS查询,并将JSON响应发送到Javascript 传单ajax查询从PostGIS获取行加载时出现的问题,javascript,jquery,ajax,leaflet,postgis,Javascript,Jquery,Ajax,Leaflet,Postgis,我的传单/Javascript代码有一个奇怪的问题。我正在尝试重构我的应用程序,该应用程序最初从PostGIS获取线条数据,因为选中了某个图层复选框: 然后它绑定了一些弹出窗口等。它工作正常,但每次都会收集所有复选框值,并通过ajax将其发送到PostGIS查询,并将JSON响应发送到queryLayer。因此,每次更改某些复选框时,都会删除当前的queryLayer,并再次加载新数据 重构后,我现在能够: 使用窗口[checkboxValue]单击复选框时,为图层创建一个专用变量(这允许我动
queryLayer
。因此,每次更改某些复选框时,都会删除当前的queryLayer
,并再次加载新数据
重构后,我现在能够:
窗口[checkboxValue]
单击复选框时,为图层创建一个专用变量(这允许我动态创建变量名),并使用ajax用PostGIS几何图形填充它layer.id
var删除这个窗口[uncheckedValue]
- 独立层:
window[checkedTrasa]=L.geoJSON(JSON.parse(response),{…}
和从组中添加/删除层L.featureGroup()
var myRenderer=L.canvas({padding:0.5,容差:20});
var trasyAll=L.featureGroup();
R10变种
var WTR
$('input[name=“trasy_checkbox”]”)。单击(函数(){
var myRenderer=L.canvas({填充:0.5,容差:20});
如果(!$(this).is(':checked')){
mymap.eachLayer(函数(层){
如果(layer.id==removeTrasa){
mymap.removeLayer(图层)
变异查询;
}
})};
如果($(this).is(':checked')){
$.ajax({
url:'script.php',
类型:'POST',
数据:{
韦伯·特拉西:查过了吗
},
成功:功能(响应){
window[checkedTrasa]=L.geoJSON(JSON.parse(response){
onEachFeature:功能(功能,图层){
var str=“blahblah”;
图层绑定弹出窗口(str{
maxWidth:“自动”
});
layer.setStyle(StanOdcinkaStyle(layer));
setStyle({renderer:myRenderer});
图层绑定工具提示(“”);
layer.on('mouseover',function(){
这是我的风格({
不透明度:0.6,
体重:6
});
});
layer.on('mouseout',function(){
这个.设置方式(StanOdcinkaStyle(this)),;
这是我的风格({
不透明度:1,
体重:4
});
});
}})
窗口[checkedTrasa].id=checkedTrasa;
窗口[checkedTrasa].addTo(trasyAll);
}
});
}
});
trasyAll.addTo(mymap);
如果在JSFIDLE或plunker中使用一些本地geojson,您能重新创建问题吗?我正在使用ajax从PostGIS中获取数据。甚至可以使用ajax在本地geojson上复制它吗?我可以与您分享我的开发html:我肯定有办法。我会尝试查看您的链接。我还没有弄清楚到底出了什么问题但是,我想提供一些建议。你应该把代码拉出来,将Trasy弹出窗口构建成一个函数,这样它就可以被重用。看起来你为R10和WTR层调用了bindPopup两次。但我不认为这是问题的原因。没有什么事情让我觉得不对劲。我能够捕捉到问题的响应R10请求并从中获取一些geojson。我建议获取其中的两小块并将其分配给代码中的一个变量。然后我将勾选其中的两个复选框以添加/删除这些小块geojson,看看您是否能够找出哪里出了问题。如果您对此进行了抨击或篡改,我可以再看一看。