惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
N
Netflix TechBlog - Medium
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
I
InfoQ
F
Fortinet All Blogs
J
Java Code Geeks
Last Week in AI
Last Week in AI
美团技术团队
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件

博客园 - 莫小龙

wps之使用宏修改全篇表格样式 geoserver之强制配置OnlineResource mysql之将shp转化为wkt,然后存储再geomerty字段内 cesium之用着色器添加建筑贴图 uniapp之plus.downloader.createDownload下载文件传参 谷歌之将网页保存为图片 elementui之table中相同数据的单元格合并 krpano之使用教程 threejs之灯光不跟随OrbitControls控制器旋转 threejs之将张纹理图片组成材质组 canvas之修改Base64图片中不透明部分的颜色 threejs之将PlaneGeometry转换为BufferGeometry threejs之利用shape通过线绘制面和体 threejs之添加渐变背景 threejs之创建发光墙体 paperjs之fitBounds适应区域前后屏幕坐标和输入坐标的转换 arcmap之通过点数据获取等值线 uniapp之安卓APP打开百度地图、高德地图APP geoserver之图片图标样式 SHP转WKT文件工具 openlayers之geoserver的wms图层mysql数据源数据修改后更新问题 通过日照时数计算每天RAD(太阳辐射)值 Uniapp之安卓签名证书(.keystore)生成
openlayer之添加带箭头的线
莫小龙 · 2025-04-16 · via 博客园 - 莫小龙

openlayer之添加带箭头的线

样式代码:

resolution参数用于控制箭头之间的间距
var styles = function(resolution) {
                    var geometry = this.getGeometry();
                    var length = geometry.getLength(); //获取线段长度
                    var radio = (25 * resolution) / length;
                    var dradio = 1; //投影坐标系,如3857等,在EPSG:4326下可以设置dradio=10000
                    var styles = [
                        new ol.style.Style({
                            stroke: new ol.style.Stroke({
                                color: "green",
                                width: 10,
                            })
                        })
                    ];
                    for (var i = 0; i <= 1; i += radio) {
                        var arrowLocation = geometry.getCoordinateAt(i);
                        geometry.forEachSegment(function(start, end) {
                            if (start[0] == end[0] || start[1] == end[1]) return;
                            var dx1 = end[0] - arrowLocation[0];
                            var dy1 = end[1] - arrowLocation[1];
                            var dx2 = arrowLocation[0] - start[0];
                            var dy2 = arrowLocation[1] - start[1];
                            if (dx1 != dx2 && dy1 != dy2) {
                                if (Math.abs(dradio * dx1 * dy2 - dradio * dx2 * dy1) < 0.001) {
                                    var dx = end[0] - start[0];
                                    var dy = end[1] - start[1];
                                    var rotation = Math.atan2(dy, dx);
                                    styles.push(new ol.style.Style({
                                        geometry: new ol.geom.Point(arrowLocation),
                                        image: new ol.style.Icon({
                                            src: 'static/icon/routearrow.png',
                                            anchor: [0.5, 0.5],
                                            scale: 0.075,
                                            rotateWithView: false,
                                            rotation: -rotation + 0.5* Math.PI
                                        })
                                    }));
                                }
                            }
                        });
                    }
                    return styles;
                }

样式调用:

图片文件:

效果:

钻研不易,转载请注明出处。。。。。。