使用JQuery ajax调用的传单叠加层控制菜单(GeoServer WFS)

时间:2017-04-20 21:46:36

标签: javascript jquery callback leaflet layer

我可以设置具有多个(叠加)图层的LeafletJS地图,并在使用基本GeoJSON文件时使用控制菜单管理其可见性,与文档示例完全相同:http://leafletjs.com/examples/layers-control/

这很好用:

  var geojson_layer1 = L.geoJson.ajax("layer1.geojson", {style: style, onEachFeature:onEachFeature});
  var geojson_layer2 = L.geoJson.ajax("layer2.geojson", {style: style, onEachFeature:onEachFeature});
  ...
  geojson_layer1.addTo(map);
  geojson_layer2.addTo(map);
  ...
  var baseMaps = {
       "MyMap": map
   };

   var overlayMaps = {
     "Layer1": Layer1,
     "Layer2": Layer2
  };

  ...

  L.control.layers(baseMaps, overlayMaps).addTo(map);

现在我尝试使用来自GeoServer(WMS / WFS)的数据来做同样的事情(仍然使用控制的底图+覆盖层)。为此,我使用JQuery ajax调用,例如:

var xyz_Parameters = {
          service: 'WFS',
          version: '1.0.0',
          request: 'GetFeature',
          typeName: 'myworkspace:xyz',
          maxFeatures: '50',
          outputFormat: 'application/json',
};

var parameters_xyz = L.Util.extend(xyz_Parameters);
var URL = owsrootUrl + L.Util.getParamString(parameters_xyz);
console.log(URL);

$.ajax({ url: URL, success: function (data) {
      var geojson_layer_1 = new L.geoJson(data, {style: style, onEachFeature:doNothing});
      geojson_layer_1.addTo(map);
  }
});

这样也可以正常工作但我无法通过菜单管理图层可见性,因为变量(geojson_layer_1此处)不会全局显示。

实际上我的问题是异步/回调(正常)行为。我想知道如何使用回调管理图层对象。 我在网上看过很多东西(例如:Handling ajax-request in leaflet map),但要么不是我想要的,要么我无法让它们发挥作用。

是否有人会有(更多)完整示例?

感谢。 汤姆

0 个答案:

没有答案