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

推荐订阅源

V
Visual Studio Blog
I
InfoQ
H
Help Net Security
GbyAI
GbyAI
博客园 - 叶小钗
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
Y
Y Combinator Blog
L
LangChain Blog
腾讯CDC
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
博客园 - Franky
D
Docker
Jina AI
Jina AI
罗磊的独立博客

博客园 - 莫小龙

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;
                }

样式调用:

图片文件:

效果:

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