2015-09-16 2 views
1

Я использую открытые слои 3, и я использую этот код для отображения карты:карта Выбор объектов с использованием ol.source.TileWMS в открытых слоях 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(', '); 
} 
}); ` 
+0

Вы получили свой ответ, не забывайте обратную связь! –

ответ

3

Вы используете источник TileWMS, представляющий собой набор изображений (плиток), отображаемых на сервере WMS. OpenLayers не знает об особенностях, используемых для визуализации изображений. Из-за этого forEachFeatureIntersectingExtent доступен только для векторных источников.

Вы можете создать WMS getFeatureInfo -request в обратном вызове boxend, чтобы загрузить информацию о функции с сервера.

В качестве альтернативы вы можете создать источник вектора, содержащий функции, которые хотите использовать, и использовать для вызова forEachFeatureIntersectingExtent.

+0

Большое спасибо Элвин. Я попробую и вернусь к вам. –

+0

Это сработало. Sry для последнего ответа –

+0

Отлично. Пожалуйста, отметьте ответ как принятый (он дает понять, что проблема не нуждается в новых ответах, и призывает таких людей, как я, отвечать на вопросы). –

Смежные вопросы