2017-11-29 6 views
0

OL Version 4.5: https://jsfiddle.net/70kd51gh/1/ OL Version 4.0.1: https://jsfiddle.net/7zs5dqcm/2/Openlayers 4.5 ImageVector Punkte automatisch Clustering

Der Code in beiden jfiddles genau das gleiche, der einzige Unterschied ist die OL-Version verwendet wird. Aus irgendeinem Grund erlaubt Version 4.5 keine Überlappung von Funktionen, Sie können hinein- und herauszoomen und sie verschwinden sehen. Version 4.0.1 funktioniert alles wie erwartet. Ich kann jedoch nicht auf 4.0.1 downgraden, da ein nicht zusammenhängender Fehler behoben wurde.

Das Problem ist spezifisch für ol.layer.Image, da ol.layer.Vector überlappt. Allerdings muss ich ol.source.ImageVector aus Leistungsgründen verwenden.

Gibt es eine Problemumgehung, damit die Features sich gegenseitig überlappen können?

var pointstyle = new ol.style.Style({ 
    image: new ol.style.Circle({ 
     radius: 7, 
     fill: new ol.style.Fill({ 
      color: '#00ff00' 
     }), 
     stroke: new ol.style.Stroke({ 
      color: '#000', 
      width: 1 
     }) 
    }) 
}); 


var styleKeys = ['x', 'cross', 'star', 'triangle', 'square']; 
var count = 250; 
var features = new Array(count); 
var e = 4500000; 
for (var i = 0; i < count; ++i) { 
    var coordinates = [2 * e * Math.random() - e, 2 * e * Math.random() - e]; 
    features[i] = new ol.Feature(new ol.geom.Point(coordinates)); 
} 

var source = new ol.source.Vector({ 
    features: features 
}); 

var vectorLayer = new ol.layer.Image({ 
    source: new ol.source.ImageVector({source: source, style: pointstyle}) 
}); 

var map = new ol.Map({ 
    layers: [ 
    vectorLayer 
    ], 
    target: 'map', 
    view: new ol.View({ 
    center: [0, 0], 
    zoom: 2 
    }) 
}); 

Antwort

3

ol.source.ImageVector von v4.5.0
Check veraltet upgrade note

reparieren Ihren Code:

var vectorLayer = new ol.layer.Vector({ 
    renderMode: 'image', 
    source: source, 
    style: pointstyle 
});