Как я могу перечислить объекты в кластерной карте? - PullRequest
0 голосов
/ 23 апреля 2019

Я разрабатываю кластерную карту на основе открытого слоя кластерных объектов . Я обрабатываю событие, когда пользователь нажимает на кластер, но я не могу получить свойства кластера, на который щелкнул пользователь.

Мой вопрос: Когда пользователь нажимает на кластер, как я могу перечислить функции, которые есть в кластере, и получить доступ к их свойствам?

Мой код выглядит примерно так:

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 Ответ

1 голос
/ 23 апреля 2019

Благодаря Майку, вот код, который работает:

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;
        }

    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...