OpenLayers3, 箭头线绘制实现

news2024/11/17 16:27:19

文章目录

  • 一、前言
  • 二、代码实现
  • 三、总结


一、前言

本文基于OpenLayers3,实现绘制箭头线的功能。

二、代码实现

<!DOCTYPE html>
<html>
<head>
    <title>绘制箭头线</title>
    <link href="../../libs/ol3/ol.css" rel="stylesheet" type="text/css" />
    <script src="../../libs/ol3/ol.js" type="text/javascript"></script>
</head>
<body>
    <div id="map" style="width: 100%; height: 95%; position: absolute;">
    </div>
    <script type="text/javascript">
        //创建底图图层
        var tdttk = '******'; // 天地图密钥
        var Tianditu_vec = new ol.layer.Tile({
            title: "天地图矢量图层",
            source: new ol.source.XYZ({
                url: "http://t0.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=" + tdttk
                wrapX: false
            })
        });
        var Tianditu_cva = new ol.layer.Tile({
            title: "天地图矢量注记图层",
            source: new ol.source.XYZ({
                url: "http://t0.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=" + tdttk
                wrapX: false
            })
        })
        //创建一个矢量资源
        var source = new ol.source.Vector();

        var styleFunction = function (feature) {
            var geometry = feature.getGeometry();
            var styles = [
            //设置线的样式
              new ol.style.Style({
                  stroke: new ol.style.Stroke({
                      color: '#FF0000',
                      width: 2
                  })
              })
            ];
            geometry.forEachSegment(function (start, end) {
                var dx = end[0] - start[0];
                var dy = end[1] - start[1];
                var rotation = Math.atan2(dy, dx);
                //arrows
                styles.push(new ol.style.Style({
                    geometry: new ol.geom.Point(end),
                    image: new ol.style.Icon({
                        src: "../../images/ArrowIcon/linearrow.png",
                        anchor: [0.75, 0.5],
                        rotateWithView: false,
                        rotation: -rotation
                    })
                }));
            });

            return styles;
        };
        //创建一个矢量图层,并添加矢量资源和设置起样式
        var vector = new ol.layer.Vector({
            source: source,
            style: styleFunction
        });
        //创建一个地图容器
        var map = new ol.Map({
            layers: [Tianditu_vec, Tianditu_cva, vector],
            target: 'map',
            view: new ol.View({
                center: [-11000000, 4600000],
                zoom: 4
            })
        });

        map.addInteraction(new ol.interaction.Draw({
            source: source,
            type: ('LineString')
        }));
    </script>
</body>
</html>

效果如下:
在这里插入图片描述

三、总结

以上为基于openlayer3 实现箭头线绘制功能的简单案例,希望对您有帮助~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2088863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

山东省大数据职称考试(2)

注意&#xff1a;数据本身不具备价值。 线性表的顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素。 面向对象程序设计的特点包括&#xff1a;抽象、封装、继承、多态123。其中&#xff0c;抽象用于描述问题的高度概括、分类和抽象&#xff0c;封装实现了数据…

物料信息库管理杂谈

在国内某大型电子设备厂调研时&#xff0c;听到研发人员说&#xff0c;采购部门总是不能及时地采购所需要物料&#xff0c;导致进度延迟&#xff1b;而采购人员常常抱怨说&#xff0c;研发人员选用的物料很难采购&#xff1b;同时&#xff0c;生产人员也认为生产排期很难进行&a…

FGF23:家族靶向治疗先行者

成纤维细胞生长因子23&#xff08;FGF23&#xff09;属于FGF19亚家族成员&#xff0c;由成骨细胞、骨细胞和骨髓合成&#xff0c;是磷酸盐和钙稳态的重要调节剂&#xff0c;同时与铁稳态、炎症和红细胞生成也有关。 &#xff08;数据来源AlphaFold&#xff09; FGF23由251个氨…

内联函数与动态内存分配

内联函数 • 调用普通函数的问题&#xff1a; 每个普通函数调用语句都需要发生跳转操作&#xff0c;这种跳转操作会带来时间开销。 • 内 联就是用 函数已被编译好的二进制代码 &#xff0c; 替换 对该函数的调用指令 • 内 联在保证函数特性的同时&#xff0c;避免了函数 调用…

什么是Java以及Java的发展历程

Java是什么 搜索百度百科词条 Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&#xff0c;极好地…

瞩“M”蓉城,驾趣“耍起” 全新BMW M5策马领衔,宝马集团13款新车闪耀成都车展

宝马秉持长期主义&#xff0c;以强大产品和创新体验&#xff0c;满足中国客户需求2024是BMW M大年&#xff0c;车型数量将扩至23款&#xff0c;几乎覆盖BMW所有细分市场全新BMW M5中国首秀&#xff0c;即将于今年年底上市 以“精简有道”融合性能美学与空气动力学&#xff0c;设…

实用好软-----电脑端 Kuvid工具 支持上千网站的视频下载软件

今天分享的这款软件支持很多网站视频下载 。全中文界面。操作比较简单。初步测试了下。下载B站视频操作方便 其他视频界面个别会解析错误。 软件主界面和相关设置界面 注意&#xff1a;设置中的自定义FFMPEG通常不需要开启,需要指定的路径是ffmpeg.exe的路径,不是所下载的安装…

2024高效获客转化指南 | 「人群模型」详解

营销进入“以人为本”的时代&#xff0c;小红书以其独特的UGC社区生态&#xff0c;在营销“人影响人”的传播链路中发挥着关键作用。 本期&#xff0c;千瓜就营销传播中“人”的研究展开探讨&#xff0c;通过解析人群模型、品牌案例&#xff0c;详细解读营销策略方法及应用&…

华为USG6625F设备ipsec隧道无IKE v1版本解决办法

新华为USG6625F防火墙&#xff0c;因需要和对端中心对接ipsec后发现无IKE V1版本&#xff0c;设备默认只有IKE v2版本&#xff0c;和对端对接隧道参数不一致&#xff0c;无法成功对接&#xff0c;因此需要下载相应的IKE v1插件后加载插件来解决该问题&#xff1b; USG6625F 版本…

Python自动化测试requests库深度详解

前言 发送HTTP请求 import requests# 登录的接口地址url http://............/login# 登录的参数params {"mobile_phone": 18300000000,"pwd": 12345678}# 请求头headers {X-Lemonban-Media-Type: lemonban.v2}# 发送登录请求# 请求类型为 Content-Typ…

《机器学习》 基于GANs构建数字图像生成器 探索深度学习世界

文章目录 引言生成对抗网络的基本原理生成对抗网络的数学表达生成对抗网络的应用生成对抗网络的挑战与优化生成对抗网络的实现示例结论&#xff1a;机器学习和ai技术的出现成为了C……SD……N 热榜的爹。 使用机器学习技术对热榜文章进行分析 引言 生成对抗网络&#xff08;Ge…

Training language models to follow instructionswith human feedback

Abstract 将语言模型做得更大并不会自动提高它们遵循用户意图的能力。例如&#xff0c;大型语言模型可能会生成不真实、有毒或对用户不有帮助的输出。换句话说&#xff0c;这些模型并未与用户对齐&#xff08;aligned&#xff09;。本文展示了一种通过人类反馈来对齐语言模型与…

Kubernetes 上安装 Jenkins

安装 Helm curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash添加 Jenkins Helm 仓库 首先添加 Jenkins Helm 仓库 helm repo add jenkins https://charts.jenkins.io helm repo update安装 Jenkins 使用 Helm 安装 Jenkins 的最新版本&…

2024最新gewe开发微信机器人教程说明

简介&#xff1a;本文将指导你如何搭建一个微信机器人&#xff0c;通过接入gewe实现智能回复与聊天功能。我们将从基础设置开始&#xff0c;逐步讲解如何配置机器人&#xff0c;并通过实例展示其实际应用。 随着人工智能技术的不断发展&#xff0c;智能机器人已经成为我们日常…

RS®SMM100A 矢量信号发生器重新定义中档仪器

R&S SMM100A 矢量信号发生器 100 MHz至44 GHz 产品综述 R&SSMM100A 矢量信号发生器在 100 MHz 至 44 GHz 的频率范围内提供一流的射频特性。这款仪器覆盖现有无线标准所使用的 6 GHz 以下的频段、新定义的最高 7.125 GHz 的 5G NR FR1 和 Wi-Fi 6E 频段以及最高 44 …

C++竞赛初阶L1-14-第六单元-数组(31~33课)547: T456477 查找特定的值

题目内容 在一个序列&#xff08;下标从 0 开始&#xff09;中查找一个给定的值&#xff0c;输出第一次出现的位置。 输入格式 第一行包含一个正整数 n&#xff0c;表示序列中元素个数。1≤n≤10000。 第二行包含 n 个整数&#xff0c;依次给出序列的每个元素&#xff0c;相…

【微信小程序】SpringBoot集成微信小程序(多小程序集成)

SpringBoot集成微信小程序 前言一、前置工作1、获取appId和appSecret核心参数 二、SpringBoot集成微信小程序1、引入pom依赖2、yml配置3、java代码文件3.1、Properties 配置类3.2 Configuration 服务类 4、使用示例4.1、获取登录后的session信息&#xff1a;openId4.2、获取当前…

提升你的校招简历:推荐高质量C++项目示例!

Linux C/C开发&#xff08;后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全&#xff09;、QT开发、学习资料、教学视频和学习路线图&#xff0c;↓↓↓↓↓↓见下面文章底部点击学习资料领取↓↓↓↓↓↓ TinyTetris TinyTetris 是一个用不到 1024 字节的 C 语言代码编…

SWAP模型入门到精通:模拟土壤水分动态、溶质运输、土壤温度以及作物生长等过程

目录 专题一 SWAP模型介绍及数据要求 专题二 数据制备与模型运行 专题三 基于R模型敏感性分析与贝叶斯优化 专题四 基于Fortran源代码分析 专题五 气候数据降尺度与变化影响分析 专题六 AI大语言模型在建模中的应用 更多应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作…

泽众P-One如何测试https接口性能问题

P-One是泽众软件自主研发的一套一站式性能测试平台&#xff0c;集管理、设计、压测、监控以及分析于一体的全方位性能测试解决方案&#xff0c;有效提升了性能测试的技术能力和效率&#xff0c;降低了测试门槛和成本&#xff0c;同时提升了软件产品质量。本文将详细介绍如何使用…