原文链接及内容
这个例子演示了在徒手模式下的ol/interaction/Draw
交互。在徒手绘图时,点是在拖动时添加的,设置freehand: true
启用徒手模式。注意,可以通过使用freehandCondition
选项有条件地启用徒手模式,例如,用Shift
键切换徒手模式,则设置为:freehandCondition: shiftKeyOnly
。
main.js
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 import Draw from 'ol/interaction/Draw.js' ;import Map from 'ol/Map.js' ;import View from 'ol/View.js' ;import {OSM , Vector as VectorSource } from 'ol/source.js' ;import {Tile as TileLayer , Vector as VectorLayer } from 'ol/layer.js' ;const raster = new TileLayer ({ source : new OSM (), }); const source = new VectorSource ({wrapX : false });const vector = new VectorLayer ({ source : source, }); const map = new Map ({ layers : [raster, vector], target : 'map' , view : new View ({ center : [-11000000 , 4600000 ], zoom : 4 , }), }); const typeSelect = document .getElementById ('type' );let draw; function addInteraction ( ) { const value = typeSelect.value ; if (value !== 'None' ) { draw = new Draw ({ source : source, type : typeSelect.value , freehand : true , }); map.addInteraction (draw); } } typeSelect.onchange = function ( ) { map.removeInteraction (draw); addInteraction (); }; addInteraction ();
界面布局文件index.html
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <!DOCTYPE html > <html lang ="en" > <head > <meta charset ="UTF-8" > <title > Freehand Drawing</title > <link rel ="stylesheet" href ="node_modules/ol/ol.css" > <style > .map { width : 100% ; height : 400px ; } </style > </head > <body > <div id ="map" class ="map" > </div > <form > <label for ="type" > Geometry type </label > <select id ="type" > <option value ="LineString" > LineString</option > <option value ="Polygon" > Polygon</option > <option value ="Circle" > Circle</option > <option value ="None" > None</option > </select > </form > <script src ="https://cdn.jsdelivr.net/npm/elm-pep@1.0.6/dist/elm-pep.js" > </script > <script type ="module" src ="main.js" > </script > </body > </html >