2017-11-29 3 views
0

OL 버전 4.5 클러스터링 4.5 ImageVector 포인트 : https://jsfiddle.net/70kd51gh/1/ OL 버전 4.0.1 : 모두 jfiddles에서 https://jsfiddle.net/7zs5dqcm/2/Openlayers 자동으로

코드는 정확히 동일, 유일한 차이점은 사용되는 OL 버전입니다. 어떤 이유로 버전 4.5는 기능이 서로 겹치도록 허용하지 않으므로 확대 및 축소하여 사라지는 것을 볼 수 있습니다. 버전 4.0.1은 모든 것이 예상대로 작동합니다. 그러나 관련이없는 버그가 수정되어 4.0.1로 다운 그레이드 할 수 없습니다.

ol.layer.Vector에서 중복을 허용하므로 문제는 ol.layer.Image에만 해당됩니다. 그러나 성능상의 이유로 ol.source.ImageVector를 사용해야합니다.

기능이 서로 겹칠 수있는 해결 방법이 있습니까?

var vectorLayer = new ol.layer.Vector({ 
    renderMode: 'image', 
    source: source, 
    style: pointstyle 
}); 
:
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 
    }) 
}); 

답변

3

ol.source.ImageVector

upgrade note

가 코드를 수정 4.5.0
검사에서 사용되지 않습니다