[英]Howto finish freehand drawing in Openlayers on mouse release
我想在釋放鼠標按鈕而不是雙擊時完成繪圖。 我怎樣才能做到這一點?
現在我默認使用此代碼在 Openlayers 繪圖功能上激活徒手繪圖:
draw = new ol.interaction.Draw({
source: drawLayerSource,
type: 'LineString',
condition: ol.events.condition.singleClick,
freehandCondition: ol.events.condition.noModifierKeys
});
map.addInteraction(draw);
但我不知道如何避免雙擊完成行串並使用鼠標釋放代替。
更新- https://jsfiddle.net/jonataswalker/frwfuzzn/
為了同時啟用手繪和直線,我正在使用此函數計算繪圖開始和指針向上之間的經過時間:
var isStraightLine = function(){
var now = new Date();
// `start_time` was set at the drawing beginning
var diff = now - start_time;
// strip the ms
diff /= 1000;
already_checked = true;
// an average time I found here
// not sure if this is completely reliable
return diff < 0.07;
};
如果我發現這是使用draw.finishDrawing()
完成的徒手繪畫。 為了理解,最好檢查一下代碼。
我可以,但前提是你保持freehandCondition
默認條件 - ol.events.condition.shiftKeyOnly
。
在pointerup
上ol.Map
,如果您正在繪圖,請使用ol.interaction.Draw#finishDrawing
完成。
var start_drawing = false;
var draw = new ol.interaction.Draw({
source: vectorSource,
type: 'LineString',
condition: ol.events.condition.singleClick
});
map.addInteraction(draw);
draw.on('drawstart', function(evt){
start_drawing = true;
});
draw.on('drawend', function(evt){
start_drawing = false;
});
map.on('pointerup', function(evt){
if(start_drawing) {
draw.finishDrawing();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.