ol3 ext-ol как сделать кластер для разных слоев - PullRequest
0 голосов
/ 06 марта 2019

Я использую ol3 / ol4 с ol-ext. Я создаю два слоя:

clusterSource = new ol.source.Cluster({
    distance: distanceFt,
    source: new ol.source.Vector()
});
// Animated cluster layer
clusterLayer = new ol.layer.AnimatedCluster({
    name: 'Cluster',
    source: clusterSource,
    animationDuration: 700, //$("#animatecluster").prop('checked') ? 700 : 0,
    // Cluster style
    style: getStyle
});

layersArray.push(clusterLayer); // adding to array

sourceReclamos_Eventos = new ol.source.Cluster({
        distance: distanceFt,
        source: new ol.source.Vector()
    });
    capaReclamos_Eventos = new ol.layer.AnimatedCluster({
        name: "Reclamos_Eventos",
        source: sourceReclamos_Eventos,
        animationDuration: 700,
        style: getStyle
    });
    layersArray.push(capaReclamos_Eventos);

Позже добавим, что слои в:

selectCluster = new ol.interaction.SelectCluster({
    layers: arraySelectCLuster,
    // Point radius: to calculate distance between the features
    pointRadius: 20,
    animate: true, //$("#animatesel").prop('checked'),
    // Feature style when it springs apart
    featureStyle: featureStyle,
    selectCluster: false,   // disable cluster selection
});

После загрузки слоев, толькосохранить элементы в первом слое, во втором слое элементы удаляются (удаляются) после изменения масштаба ... почему?

, пожалуйста, помогите

РЕДАКТИРОВАТЬ

Я добавляю функции, используя clusterLayer.getSource (). AddFeatures () и capaReclamos_Eventos.getSource (). AddFeatures ().

function addFeatures_Reclamos_Eventos(ffs, centrar) {
    var transform = ol.proj.getTransform('EPSG:4326', 'EPSG:3857');
    var features = [];
    for (var i = 0; i < ffs.length; i++) {
        features[i] = new ol.Feature();
        features[i].setProperties(ffs[i]);
        var geometry = new ol.geom.Point(transform([parseFloat(ffs[i].lon), parseFloat(ffs[i].lat)]));
        features[i].setGeometry(geometry);
    }
    qweFeature = features;
    capaReclamos_Eventos.getSource().addFeatures(features);
    removeloading('mapLoading');
    if (document.getElementById('botonFiltrar')) {
        document.getElementById('botonFiltrar').disabled = false;
    }
    if (centrar) {
        window.setTimeout(function () {
            var extent = capaReclamos_Eventos.getSource().getExtent();
            map.getView().fit(extent, map.getSize());
        }, 700);// 1/2 seg        
    }
}
...