为什么不在地图上显示功能

时间:2016-01-06 22:22:24

标签: javascript openlayers-3

这是小提琴Link。功能在地图上显示的时候就像这段代码一样:

 var featureVectorLayer = new ol.layer.Vector({
    source: featureClusterSource,
    style: new ol.style.Style({
        fill: new ol.style.Fill({
            color: 'rgba(255, 255, 255, 0.2)'
        }),
        stroke: new ol.style.Stroke({
            color: 'blue',
            width: 2
        }),
        image: new ol.style.Circle({
            radius: 7,
            fill: new ol.style.Fill({
                color: '#ffcc33'
            })
        })
    })
});

但是我将source - featureClusterSource更改为featureVectorSource.it效果很好但是在这段时间我点击地图上的功能时我没有获得功能。

 var featureVectorLayer = new ol.layer.Vector({
    source: featureVectorSource,
    style: new ol.style.Style({
        fill: new ol.style.Fill({
            color: 'rgba(255, 255, 255, 0.2)'
        }),
        stroke: new ol.style.Stroke({
            color: 'blue',
            width: 2
        }),
        image: new ol.style.Circle({
            radius: 7,
            fill: new ol.style.Fill({
                color: '#ffcc33'
            })
        })
    })
});

如何使用featureClusterSource在地图上显示功能?

1 个答案:

答案 0 :(得分:0)

  

但是我将source - featureClusterSource更改为featureVectorSource.it效果很好但是在这段时间我点击地图上的功能时没有获得功能。

单击相交的要素时,请更改forEachFeatureAtPixel方法以将其添加到数组中。 Here是一个工作小提琴

    map.on("singleclick", singleClickCB);
    function singleClickCB(event) {
        var features = [];
        map.forEachFeatureAtPixel(event.pixel, function(feature, layer) {
          features.push(feature);
        });
        if (features) {
           var i;
           for (i = 0; i < features.length; ++i) {
              alert(features[i].get('title'));
            }
         }
   } ;