2016-08-08 3 views
1

지도에 새 기능을 그리는 데 ol.interaction.Draw을 사용하고 있지만 이미지도에 기존 기능이 있습니다. 마우스가 기존 기능을 가리키면 사용자가 새 기능을 배치 할 수 없도록하고 싶습니다.ol.interaction.Draw on mouse move?

지금은 이미 기능이있는 픽셀에 설정되어 있으면 false를 반환하는 Draw 상호 작용에서 condition을 사용합니다. 그러나이 픽셀 위로 마우스를 움직일 때 사용자가 마커를 배치 할 수있는 것처럼 스타일이 지정되었습니다. 클릭 한 번뿐만 아니라 모든 마우스를 움직일 때마다 확인되는 condition과 같은 것이 있습니까?

업데이트 : 내 현재 상태는 다음과 같습니다 그냥 클릭으로 모든 마우스 이동 에서 체크 상태와 같은 일이

condition: function(e) { 
    var isFirstOne = true; 
    var feature = map.forEachFeatureAtPixel(e.pixel, function(feature) { 
    var n = feature.get('name'); 
    // if n is undefined, feature is the current drawing one 
    if (!!n) return feature; 
    }); 
    return (!feature); 
} 
+0

당신은'당신이 condition'를 사용하는 코드를 제공 할 수 있습니까? –

+0

@HichamZouarhi : – levu

+0

질문을 업데이트하여 조건 내에서 드로잉 상호 작용의 스타일을 변경할 수 있지만 OL3에서 미리 정의 된 기능을 찾을 수 없습니다. –

답변

1

있습니까?

예, pointermove 사용할 수 있으며, (CSS를 통해) 커서를 변경 :

map.on('pointermove', function(e) { 
    if (e.dragging) return; 
    var hit = map.hasFeatureAtPixel(map.getEventPixel(e.originalEvent)); 
    map.getTargetElement().style.cursor = hit ? 'pointer' : ''; 
});