2014年1月14日火曜日

33 - マウスでフィーチャを描画 6 - 描画途中で戻る(Undo)元に戻す(Redo)

33-6 ポリゴン(多角形)の描画途中で戻る(Undo)元に戻す(Redo)
examples フォルダにある「OpenLayers Undo/Redo Drawing Methods(draw-undo-redo.html)」を参考に マウスで移動してみます。
「ol014-nippon_bmi_akiruno_pgis.html」 ファイルを続けて使います。

a メニューの「ファイル」->「開く」をクリックします。







b 「ファイルを開く」ウィンドウで、「OpenLayers-2.13.1」->「examples」->「draw-undo-redo.html」をクリックして選択し、「OK」ボタンをクリックします。






同じように「draw-undo-redo.js」を開きます。








c 次のように「draw-undo-redo.js」の内容の一部をコピーして「ol014-nippon_bmi_akiruno_pgis.html」に貼り付け、修正します。

---
// ここから追加
  OpenLayers.Event.observe(document, "keydown", function(evt) {
   var handled = false;
   switch (evt.keyCode) {
    case 90: // z
     if (evt.metaKey || evt.ctrlKey) {
//    draw.undo();
      drawControls.polygon.undo(); // "draw" を "drawControls.polygon" に修正
      handled = true;
     }
     break;
    case 89: // y
     if (evt.metaKey || evt.ctrlKey) {
//    draw.redo();
      drawControls.polygon.redo(); // "draw" を "drawControls.polygon" に修正
      handled = true;
     }
     break;
    case 27: // esc
//   draw.cancel();
     drawControls.polygon.cancel(); // "draw" を "drawControls.polygon" に修正
     handled = true;
     break;
   }
   if (handled) {
    OpenLayers.Event.stop(evt);
   }
  });
// ここまで
 </script>
</head>
---


3回クリックしたところで








「Ctrl + z」(Macは「⌘ + z」)キーを押すと、直前の点がキャンセルされる。







「Ctrl + y」(Macは「⌘ + y」)キーを押すと、キャンセルさた点が元に戻る。







「esc」キーを押すと、描画途中のフィーチャがすべて消える。









「33 - マウスでフィーチャを描画」参考 HTML ファイル
ol014-nippon_bmi_akiruno_pgis.html

0 件のコメント: