OpenLayers의 클릭 이벤트
1967 단어 OpenLayers클릭이벤트
var selectSingleClick = new ol.interaction.Select();
map.addInteraction(selectSingleClick);
selectSingleClick.on('select', function(e) {
var features = e.target.getFeatures().getArray();
if(features.length > 0) {
console.log(features[0].values_);
}
});
클릭 이벤트는 구체적인 Feature를 클릭하면 터치되며 밑그림을 클릭하면 클릭 이벤트가 터치되지 않습니다.
이벤트를 터치하면 위의 리셋 함수를 실행합니다.콜백 함수에서 필요한 작업을 수행할 수 있습니다.
그러나 이 사건은 전체ol을 겨냥한 것이다.Map 객체그래서 서로 다른 Feature에 대해 위에서 같은 리듬을 촉발한다.그러면 서로 다른 Feature가 필요로 하는 리셋 논리가 다르면 조건 처리를 해야 한다.
예를 들어 한 개의 점, 탄창 제시점의 위치를 클릭하면원을 클릭하면 탄창이 원의 반경을 알려줍니다.
따라서 위의if조건에서 switch를 추가하여 현재 클릭한 것이 점인지 원(예를 들어 id를 통해 판단)인지 판단하고 대응하는 처리를 할 수 있다.
이렇게 처리하는 것이 가장 직관적이지만 번거롭고 작업량이 많다.구별 도형은 id를 사용하면 만 개의 도형이 있고 switch에는 만 개의 조건이 필요합니다.따라서 클릭한 도형의 리셋과 파라미터를 전송할 수 있는지, 어떤 Feature를 클릭하면 이 Feature의 리셋을 촉발할 수 있는지를 고려한다.
리셋 매개 변수 e에 속성values 이 있습니다.이 속성은 Feature를 정의할 때 전달되는 매개변수입니다.
예를 들어, 점 Feature를 정의합니다.
new ol.Feature({
geometry: new ol.geom.Point(coordinate)
})
클릭 이벤트의values 인쇄속성:
console.log(features[0].values_);
콘솔 출력:
{
geometry: {...}
}
즉, Feature 생성 시 매개 변수가values속성따라서 Feature 생성 시 데이터 매개 변수를 첨부합니다.
new ol.Feature({
geometry: new ol.geom.Point(coordinate),
data: {
callback: function(params) {
console.log(params);
},
callbackParams: {}
}
})
클릭 이벤트의values 인쇄속성:
{
geometry: {...},
data: {
callback: function(params) {
console.log(params);
},
callbackParams: {}
}
}
따라서 Map의 클릭을 처리할 때:
selectSingleClick.on('select', function(e) {
var features = e.target.getFeatures().getArray();
if(features.length > 0) {
var data = features[0].values_.data;
if(data.callback) {
data.callback(e, data.callbackParams);
}
}
});
그러면 Feature 자체 콜백 함수가 실행됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenLayers의 클릭 이벤트OpenLayers의 클릭 이벤트는 전체ol에 추가됩니다.Map 객체의: 클릭 이벤트는 구체적인 Feature를 클릭하면 터치되며 밑그림을 클릭하면 클릭 이벤트가 터치되지 않습니다. 이벤트를 터치하면 위의 리셋 함수...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.