簡體   English   中英

如何在鼠標釋放時在 Openlayers 中完成徒手畫

[英]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

pointerupol.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();
  }
});

http://jsfiddle.net/jonataswalker/ewv0mo3c/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM