美文网首页openlayers学习笔记
五章-50-绘制点线面

五章-50-绘制点线面

作者: 彩云飘过 | 来源:发表于2020-04-07 18:48 被阅读0次

本文基于腾讯课堂老胡的课《跟我学Openlayers--基础实例详解》做的学习笔记,使用的openlayers 5.3.x api。

源码 见 1050.html ,对应的 官网示例 https://openlayers.org/en/latest/examples/draw-features.html?q=Drag

https://openlayers.org/en/latest/examples/draw-freehand.html?q=interaction

freehand 属性,在徒手模式下操作线条、多边形和圆。这使得交互总是在徒手模式下进行,并优先于任何徒手条件选项。

image.png
<!DOCTYPE html>
<html>

<head>
   <title>绘制点线面</title>
   <link rel="stylesheet" href="../include/ol.css" type="text/css" />
   <script src="../include/ol.js"></script>
</head>
<style>

</style>

<body>
   <form class="form-inline">
       <label>几何类型 &nbsp;</label>
       <select id="type">
           <option value="Point">Point</option>
           <option value="LineString">LineString</option>
           <option value="Polygon">Polygon</option>
           <option value="Circle">Circle</option>
           <option value="None">无</option>
       </select>
   </form>

   <div id="map" class="map"></div>

   <script>
       var raster = new ol.layer.Tile({
           source: new ol.source.OSM()
       });

       var source = new ol.source.Vector({
           wrapX: false //地图缩放后,世界地图重复出现,这里控制绘制的要素是否重复重现,默认为true
       });

       var vector = new ol.layer.Vector({
           source: source
       });

       var map = new ol.Map({
           layers: [raster, vector],
           target: 'map',
           view: new ol.View({
               center: [-11000000, 4600000],
               zoom: 4
           })
       });

       var typeSelect = document.getElementById('type');

       var draw;

       function addInteraction() {
           var value = typeSelect.value;
           if (value !== 'None') {
               //关键点,定义交互绘制操作
               draw = new ol.interaction.Draw({
                   source: source,
                   type: typeSelect.value
               });
               map.addInteraction(draw);
           }
       }


       typeSelect.onchange = function () {
           map.removeInteraction(draw); //将原有的交互操作去掉
           addInteraction();
       };

       addInteraction();
   </script>
</body>

</html>

相关文章

  • 五章-50-绘制点线面

    本文基于腾讯课堂老胡的课《跟我学Openlayers--基础实例详解》做的学习笔记,使用的openlayers 5...

  • 绘制模式

    除了在SDK中写死输入的点线面之外,常用的就是绘制模式,绘制模式中,点的绘制比较麻烦,线面的绘制比较简单。 1.点...

  • Primitive绘制点线面

    PrimitiveUtil.js代码 测试代码 效果

  • Primitive篇(贴图)

    前几篇博客我们了解了自定义点、线、面绘制,这篇我们接着学习cesium自定义纹理贴图。我们完成点线面的绘制,只是绘...

  • 学习WebGL文章目录

    基础篇 第一个WebGL程序绘制三角形深入了解Shader绘制点线面变换矩阵透视和正交投影摄像机绘制正方体基本光照...

  • 零基础入门OpenGL系列教程(六、早期OpenGL绘图属性)

    上一篇介绍了基础图元的绘制,讲到了如何绘制点线面。在MFC中,对笔触的控制我们可以调用CPen和CBrush这两个...

  • 2021.1.31(晴)

    今天值班,不该去。50-

  • 学习WebGL之绘制点线面

    本系列所有文章目录 本文将详细介绍WebGL三角形之外的其余绘制模式,下面是运行截图,通过下拉菜单可以选择不同的绘...

  • arcgis for android(10.2.9)- 点线面绘

    上一篇文章介绍了Symol接口和图层Layer。今天具体介绍点线面的绘制。需求分析:我们需要实现的是,选择划线,多...

  • OpenGL ES入门点线面的绘制

    OpenGLES图元的绘制方式有如下几种 在绘制图形时候我们往往用到更多的是三角形的绘制,所以详细讲解三种三角形绘...

网友评论

    本文标题:五章-50-绘制点线面

    本文链接:https://www.haomeiwen.com/subject/ohxluhtx.html