【OpenLayer : 语法】绘制点线面功能(一)

本文详细介绍了如何使用OpenLayers库实现地图上的自由手绘功能,包括点、线、面的绘制。通过实例代码展示了如何创建交互对象,并将其添加到地图上,同时解释了矢量图层和数据源的重要性。

一、参考博客或官网:

 1、https://openlayers.org/en/latest/examples/draw-freehand.html

 2、

二、功能点效果展示:

 

三、实现方式讲解:

 

     

 

四、最简单的实现方式:

import Draw from 'ol/interaction/Draw.js';
var source = new VectorSource({wrapX: false});
var vector = new VectorLayer({
      source: source
 });
// 生成交互对象
var draw = new Draw({
            source: source , //将矢量数据源添加进去
            type: 点线面的类型:LineString,Polygon,Circle....
            freehand: true
          });
		  
map.addLayer(vector);//将图层添加到地图上,否则无法显示绘制的元素。	  
map.addInteraction(draw);	//添加交互
map.removeInteraction(draw);    //删除交互

地图中添加绘制交互对象。
1、生成一个绘制交互对象 ;
2、地图中添加该交互对象到原有的交互对象集合中。      

1、通过地图Map的添加移除
map.addInteraction(draw);    
map.removeInteraction(draw);
来实现这个功能的启动和关闭。--海萍的是吗?
2、生成绘制交互对象的source才是问题关键:因为不一定之前生成了图层或图层的源。

 

【注意事项】

1、  绘制的点线面一般是添加到VectorLayer矢量图层的VectorSource矢量数据源上面的。并且需要把该VectorLayer矢量图层添加到地图中,这样才能显示出来。

2、绘制的点线面的数据源:可以是矢量数据源VectorSource , 但是不能是:ol.source.OSM() 【和对应的图层:ol.layer.Tile(),这个可能不用考虑,毕竟图层是用于显示,数据源才是用于添加绘制元素的】,或者会报错:

3、Map.addLayer()是按照“栈”结构来的,也就是越是后加入的图层,越在上层。

 

 

 

 

 

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值