繁体   English   中英

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

[英]Selecting map objects using ol.source.TileWMS in open layers 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(', ');
 }
});   `

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM