>

오픈 레이어 클러스터 된 기능 . 사용자가 클러스터를 클릭 할 때 이벤트를 처리하고 있지만 사용자가 클릭 한 클러스터의 속성을 가져올 수 없습니다.

내 질문 :사용자가 클러스터를 클릭하면 클러스터에있는 기능을 열거하고 해당 속성에 액세스하려면 어떻게해야합니까?

내 코드는 다음과 같습니다 :

var source = new VectorSource({
        features: features  //here are my features
});
var clusterSource = new Cluster({
        distance: 20,
        source: source
});
var clusters = new VectorLayer({
        source: clusterSource,
        style: function(feature) { ... }
});
var raster = new TileLayer({
        source: new OSM()
});
var map = new Map({
        layers: [raster, clusters],
        target: 'map',
        view: new View({ center: [0, 0], zoom: 2})
});
map.on('click', function(event) {
    map.forEachFeatureAtPixel(event.pixel, function(feature,layer) {
        alert('found feature');
        // here I am stuck. How can I access the properties in the features of the cluster ?
    });
});


  • 답변 # 1

    마이크 덕분에 작동하는 코드는 다음과 같습니다.

    map.on('click', function(event) {
        map.forEachFeatureAtPixel(event.pixel, function(feature,layer) {
            alert('found feature');
            var Clusters = feature.getProperties();
            var NumberOfFeaturesInCluster = Clusters.features.length
            //example of extracting and concatenating a property called 'name'
            var listofnames = ''
            for (i = 0; i < NumberOfFeaturesInCluster; i++) {
              listofnames += ", " + Clusters.features[i].getProperties().name;
            }
        });
    });
    
    

  • 이전 arrays - C에서 #include 사용
  • 다음 .net - ClickOnce 응용 프로그램에 명령 줄 인수를 어떻게 전달합니까?