openlayer绘制扇形

11 篇文章 0 订阅
1 篇文章 0 订阅

yi.前瞻

本节内容用到最核心的知识,初中数学知识,正弦、余弦。

在这里插入图片描述

er.上代码,实战

一开始我以为像这种图像的简单绘制,应该很简单,但是自带的API却没有找到,但是他有绘制多边形(Polygon)的接口,那么我们只需要计算出扇形所有的点位就可以了。然后我就开始在草稿纸上绘制草图,经过分析计算点位用初中学到的正弦、余弦就可以搞定

/**
* 创建扇形多边形点位集合
 * @param origin 中心点
 * @param radius 半径、
 * @param angle 以正北方向偏移角度
 * @param range 范围
 * @returns 返回点位集合
 */
static createRegularPolygonCurve = (origin: any, radius: any, angle: any, range: any) => {
   let pointList: any = [];
    /**
     * 添加起始点位
     */
    pointList.push(origin)
    /**
     * 开始角度
     */
    let startAngle = angle - (range / 2);
    /**
     * 根据传进来的角度范围绘制
     */
    for (let i = 0; i < range; i++) {
        startAngle += 1;
        /**
         * 利用余弦计算出维度,因为在二维地图中正北方向是朝上的,同理经度有正弦可以计算出来
         */
        let lon = Math.cos(startAngle * Math.PI / 180) * radius + origin[0];
        let lat = Math.sin(startAngle * Math.PI / 180) * radius + origin[1];
        /**
         * 添加进数组中
         */

        pointList.push([lon, lat]);
    }
    return pointList;
}

san.完整实例(总结)

/**
  * 返回原型实例对象
  */
let opiton: any = new Feature({
     geometry: new Polygon([this.createRegularPolygonCurve(center, radius, 45, 90)])
 });
opiton.setStyle(this.style())


/**
* 创建扇形多边形点位集合
 * @param origin 中心点
 * @param radius 半径、
 * @param angle 以正北方向偏移角度
 * @param range 范围
 * @returns 返回点位集合
 */
static createRegularPolygonCurve = (origin: any, radius: any, angle: any, range: any) => {
   let pointList: any = [];
    /**
     * 添加起始点位
     */
    pointList.push(origin)
    /**
     * 开始角度
     */
    let startAngle = angle - (range / 2);
    /**
     * 根据传进来的角度范围绘制
     */
    for (let i = 0; i < range; i++) {
        startAngle += 1;
        /**
         * 利用余弦计算出维度,因为在二维地图中正北方向是朝上的,同理经度有正弦可以计算出来
         */
        let lon = Math.cos(startAngle * Math.PI / 180) * radius + origin[0];
        let lat = Math.sin(startAngle * Math.PI / 180) * radius + origin[1];
        /**
         * 添加进数组中
         */

        pointList.push([lon, lat]);
    }
    return pointList;
}
/**
* 定义样式
*/
static style = ()=>{

	return new Style({
            stroke: new Stroke({       // 线样式
                color: 'blue',
                width: 0.01
            }),
            fill: new Fill({           // 填充样式
                color: 'blue'
            })
        })
}

完整代码如上所示,绘制一个扇形很简单有没有?

转载请注明出处: https://blog.csdn.net/weixin_43356511/article/details/123610458.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
要使用OpenLayers绘制面,您可以按照以下步骤操作: 1. 首先,确保您已经在项目中引入了OpenLayers库。您可以从OpenLayers官方网站下载并引入它。 2. 创建一个地图容器,可以是一个div元素,用于显示地图。 3. 初始化一个地图对象,并将其添加到地图容器中。 4. 创建一个矢量图层,用于绘制面。 5. 创建一个绘制交互工具,例如ol.interaction.Draw,指定绘制的几何类型为面geometryType: 'Polygon'。 6. 将绘制交互工具添加到地图中。 7. 在绘制完成后,通过监听drawend事件获取绘制的几何对象。 8. 将绘制的几何对象添加到矢量图层中,并更新地图显示。 下面是一个简单的示例代码: ```javascript // 创建地图容器 var mapContainer = document.getElementById('map'); // 初始化地图对象 var map = new ol.Map({ target: mapContainer, layers: [ // 添加一个矢量图层 new ol.layer.Vector({ source: new ol.source.Vector() }) ], view: new ol.View({ center: [0, 0], zoom: 2 }) }); // 创建绘制交互工具 var draw = new ol.interaction.Draw({ source: map.getLayers().item(0).getSource(), type: 'Polygon' }); // 添加绘制交互工具到地图 map.addInteraction(draw); // 监听绘制完成事件 draw.on('drawend', function(event) { var feature = event.feature; // 添加绘制的几何对象到矢量图层 map.getLayers().item(0).getSource().addFeature(feature); // 更新地图显示 map.getView().fit(map.getLayers().item(0).getSource().getExtent()); }); ``` 这样,您就可以在OpenLayers绘制面了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值