layer绘制方法

//画线
-(CAShapeLayer *)drawLineFromPoint:(CGPoint)p1 toPoint:(CGPoint)p2 width:(CGFloat)w color:(UIColor *)c
{
    CAShapeLayer *layer = [CAShapeLayer layer];
    layer.lineWidth = w;
   // layer.fillColor = c.CGColor;
    layer.strokeColor = c.CGColor;
    
    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:p1];
    [path addLineToPoint:p2];
    layer.path = path.CGPath;
    
    [self.layer addSublayer:layer];
    
    return layer;
}
//画虚线
- (CAShapeLayer*)dashLineFromPoint:(CGPoint)p1 toPoint:(CGPoint)p2 realLinePoint:(CGFloat)realLinePoint dashLinePoint:(CGFloat)dashLinePoint color:(UIColor*)color lineWidth:(CGFloat)lineWidth
{
    //realLinePoint 单位实线长度  dashLinePoint 单位间隙长度
    CAShapeLayer *layer = [self drawLineFromPoint:p1 toPoint:p2 width:lineWidth color:color];
    layer.lineDashPattern = @[[NSNumber numberWithInteger:realLinePoint],[NSNumber numberWithInteger:dashLinePoint]];

    return layer;
}
//渐变
AGradientLayer *topMaskLayer = [[CAGradientLayer alloc]init];
    topMaskLayer.colors = @[(__bridge id)[UIColor yellowColor].CGColor,
                          (__bridge id)[UIColor blueColor].CGColor];
    colorBacklayer.frame = xxx;
    topMaskLayer.startPoint = CGPointMake(0.5, 0);
    topMaskLayer.endPoint = CGPointMake(0.5, 1);
    [self.layer addSublayer:topMaskLayer];

 

### OpenLayers 绘制功能概述 OpenLayers 提供了强大的交互工具来支持矢量图形的绘制操作。通过 `ol.interaction.Draw` 类可以轻松实现地图上的几何对象绘制,如点、线、多边形等[^1]。 对于特定需求,在 Vue 和 OpenLayers 结合使用的场景下,可以通过配置自定义绘图逻辑以满足应用的要求。例如,当完成绘制时清除锚点并禁用默认行为如双击缩放等功能[^2]。 下面是一个简单的代码片段展示如何设置一个用于绘制矩形的实例: ```javascript import 'ol/ol.css'; import { Map, View } from 'ol'; import TileLayer from 'ol/layer/Tile'; import OSM from 'ol/source/OSM'; import VectorSource from 'ol/source/Vector'; import VectorLayer from 'ol/layer/Vector'; import Draw from 'ol/interaction/Draw'; // 初始化向量数据源和层 const vectorSource = new VectorSource(); const vectorLayer = new VectorLayer({ source: vectorSource, }); // 创建地图视图 new Map({ target: 'map', layers: [ new TileLayer({ source: new OSM() }), vectorLayer, ], view: new View({ center: [0, 0], zoom: 2, }), }); // 添加绘制交互 const drawInteraction = new Draw({ type: 'Circle', // 更改为 "Square" 或其他形状以适应不同类型的绘制 source: vectorSource, }); drawInteraction.on('drawend', function (event) { event.preventDefault(); // 取消默认结束动作 const feature = event.feature; console.log(feature.getGeometry().getCoordinates()); }); // 将绘制控件添加到地图上 map.addInteraction(drawInteraction); // 屏蔽双击放大事件 map.on('dblclick', function (evt) { evt.originalEvent.stopPropagation(); }); ``` 需要注意的是,随着版本迭代部分 API 接口可能有所变化,因此建议查阅最新官方文档获取最准确的信息[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值