Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传单ajax查询从PostGIS获取行加载时出现的问题_Javascript_Jquery_Ajax_Leaflet_Postgis - Fatal编程技术网

Javascript 传单ajax查询从PostGIS获取行加载时出现的问题

Javascript 传单ajax查询从PostGIS获取行加载时出现的问题,javascript,jquery,ajax,leaflet,postgis,Javascript,Jquery,Ajax,Leaflet,Postgis,我的传单/Javascript代码有一个奇怪的问题。我正在尝试重构我的应用程序,该应用程序最初从PostGIS获取线条数据,因为选中了某个图层复选框: 然后它绑定了一些弹出窗口等。它工作正常,但每次都会收集所有复选框值,并通过ajax将其发送到PostGIS查询,并将JSON响应发送到queryLayer。因此,每次更改某些复选框时,都会删除当前的queryLayer,并再次加载新数据 重构后,我现在能够: 使用窗口[checkboxValue]单击复选框时,为图层创建一个专用变量(这允许我动

我的传单/Javascript代码有一个奇怪的问题。我正在尝试重构我的应用程序,该应用程序最初从PostGIS获取线条数据,因为选中了某个图层复选框:

然后它绑定了一些弹出窗口等。它工作正常,但每次都会收集所有复选框值,并通过ajax将其发送到PostGIS查询,并将JSON响应发送到
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,看看您是否能够找出哪里出了问题。如果您对此进行了抨击或篡改,我可以再看一看。