在打开的图层中使用ol.source.TileWMS选择地图对象3

时间:2015-09-16 12:40:21

标签: javascript openlayers-3

我正在使用开放层3, 我正在使用此代码显示地图:

wmsSource = new ol.source.TileWMS({
           url: 'http://demo.boundlessgeo.com/geoserver/wms',
           params: { 'LAYERS': 'ne:ne' },
           serverType: 'geoserver',
           crossOrigin: ''
      });
       var wmsLayer = new ol.layer.Tile({
           source: wmsSource
       });    

我正在使用dragbox进行矩形选择,当我进行shift + drag时,我无法在地图中选择对象。有人可以帮我解决一下如何实现它吗? 这是我用于矩形选择的代码。

dragBox.on('boxend', function(e) {
  // features that intersect the box are added to the collection of  
  // selected features, and their names are displayed in the "info"
  // div
  var info = [];
  var extent = dragBox.getGeometry().getExtent();
  wmsSource .forEachFeatureIntersectingExtent(extent, function(feature) {
    selectedFeatures.push(feature);
    info.push(feature.get('name'));
  });
  if (info.length > 0) {
   infoBox.innerHTML = info.join(', ');
 }
});   `

1 个答案:

答案 0 :(得分:3)

您使用TileWMS源,它是在WMS服务器上呈现的图像(图块)的集合。 OpenLayers不了解用于渲染图像的功能。因此,forEachFeatureIntersectingExtent仅适用于矢量来源。

您可以在boxend回调中创建WMS getFeatureInfo - 请求,以从服务器加载功能信息。

或者,您可以创建一个包含所需功能的矢量源,并用于forEachFeatureIntersectingExtent调用。