1
OL3 벡터 레이어에있는 피쳐의 수를 계산하는 방법을 아는 사람이 있습니까?열린 레이어에서 벡터 레이어의 벡터 요소 수를 얻는 방법 3
다음과 같이 내 벡터 레이어가 정의, 나는 현재 렌더링되는 얼마나 많은 이상적으로는 얼마나 많은 요소를 알고, 그리고 것 다음 (GeoJSON) 기능이로드되면
var styleCache = {};
var WFS_layer_Traffic_Lights = new ol.layer.Vector({
source : new ol.source.GeoJSON({
projection : 'EPSG:3857',
url : "Vector_Data/Traffic_Lights_Bordeaux.geojson"
}),
style : function(feature, resolution) {
var path;
var x_anchor;
var y_anchor;
if(resolution < 4){
path = 'Icons/Traffic_Lights_Sign_Icon_Small.png';
x_anchor = 23;
y_anchor = 90;
}
if(resolution >= 4 && resolution < 10){
path = 'Icons/Traffic_Lights_Sign_Small.png';
x_anchor = 16;
y_anchor = 16;
}
if(resolution >= 10){
path = 'Icons/Traffic_Lights_Sign_Tiny.png';
x_anchor = 10;
y_anchor = 10;
}
if (!styleCache[path]) {
styleCache[path] = [new ol.style.Style({
fill : new ol.style.Fill({
color : 'rgba(255, 255, 255, 0.1)'
}),
stroke : new ol.style.Stroke({
color : '#319FD3',
width : 1
}),
image: new ol.style.Icon(({
anchor: [x_anchor, y_anchor],
anchorXUnits: 'pixels',
anchorYUnits: 'pixels',
src: path
})),
text : new ol.style.Text({
font : '12px Calibri,sans-serif',
text : "",
fill : new ol.style.Fill({
color : '#000'
}),
stroke : new ol.style.Stroke({
color : '#fff',
width : 4
})
}),
zIndex : 1
})];
}
return styleCache[path];
}
});
Ajax 요청 스레드의 비동기 특성을 처리하기 위해 어떻게 기능 수를 얻었는지 말한 후에 궁금해하기 때문에 저에게도 두 가지 질문에 답변 해 주셔서 감사합니다. 훌륭한 대답 비록 내가 궁금해하고 있었지만 ... –
질문의 마지막 부분에서 언급했듯이 렌더링 된 요소의 수를 얻을 수 있는지 궁금합니다. 다시 한번 감사드립니다. –
'view.calculateExtent (map.getSize)'를 사용하여 현재 뷰 범위를 가져오고'vectorSource.getFeaturesInExtent'를 사용하여 해당 범위의 피쳐를 가져올 수 있습니다. 하지만 이것은 방탄하지 않습니다. 왜냐하면'calculateExtent'의 문제로 인해 뷰가 회전 될 때 올바른 결과를 얻지 못할 것이고 범위 밖에 있지만지도에 계속 표시되는 기능이있을 수 있습니다 (왜냐하면 예를 들어 큰 기호로 표시). 따라서주의해서 사용하십시오. – erilem