openlayers更改点坐标

我现在的需求是无人机点位根据ws传输的经纬度改变位置,在网上查了很多资料,终于是做出来了,如果有问题请指出。
效果图,无人机可以来回移动
在这里插入图片描述
这里是核心代码

// 添加飞机点位图层
    let vectorLayerpoint
    function DronepointLayer() {
        vectorLayerpoint = new VectorLayer({
            source: new VectorSource(),
            name: 'Pointlayers'
        });
        imap.addLayer(vectorLayerpoint);
        // var layerA = imap.getLayers().getArray()[1]; 
        // imap.getView().setZIndex(layerA, vectorLayerpoint.getZIndex() + 1);
    }
    //Dronepoint方法传入ws的数据
    let modelArr = []
    function Dronepoint(params) {
        if (vectorLayerpoint == undefined) {
            return
        }
        if(!params){
            vectorLayerpoint.getSource().clear();
            //cesiumViewer.entities.removeById('threeDrone')
            modelArr=[]
            return
        }
        // vectorLayerpoint.getSource().clear();
        // cesiumViewer.entities.removeById('threeDrone')
        params.forEach((item, index) => {
            var items = item;
            var obj = getModelById(item.id);
            var model;
            if (obj.model) { //表示已经存在于数组当中
              // 更新位置
              model = obj.model;
              vectorLayerpoint.getSource().forEachFeature((itempoint)=>{
                itempoint.setGeometry(new Point([item.tracing.origin.lng, item.tracing.origin.lat]));
                // itempoint.getGeometry().translate(model.tracing.origin.lng, model.tracing.origin.lat)
                console.log([item.tracing.origin.lng, item.tracing.origin.lat],itempoint, '更新位置');
              })

            } 
            else {
              // 创建模型
              model = crateModel(items);
              modelArr.push(model);
              console.log(modelArr, model,'创建模型');
            }
        });
    }
    // 创建无人机
function crateModel(item) {
     // 创建feature,一个feature就是一个点坐标信息
     const featurepoint = new Feature({
        geometry: new Point([item.tracing.origin.lng, item.tracing.origin.lat]),
    });
    //addModel(item.tracing.origin.lng, item.tracing.origin.lat, item.height);
    //console.log(item.tracing.origin,vectorLayerpoint,imap.getLayers().getArray(),'具体点');
    let style = new Style({
        image: new Icon({
            scale: [0.3, 0.3],
            src: DronepointImg,
            anchor: [0.2, 0.5]
        }),
        text: new Text({
            font: 'normal 14px 黑体',
            // // 对其方式
            textAlign: 'center',
            // 基准线
            textBaseline: 'middle',
            offsetY: 35,
            offsetX: 35,
            backgroundFill: new Stroke({
                color: 'rgb(65 65 65 / 70%)',
            }),
            // 文本填充样式
            fill: new Fill({
                color: 'rgba(236,218,20,1)'
            }),
            padding: [5, 5, 5, 5],
            text: `${item.name + '\n'}${'lng:' + item.tracing.origin.lng},${'lat:' + item.tracing.origin.lat}`,
        })
    })
    featurepoint.setStyle(style);
    vectorLayerpoint.getSource().addFeature(featurepoint);
    return item;
  }
    // 获取模型
    function getModelById(id) {
    if (!id) return null;
    var obj = {};
    for (var i = 0; i < modelArr.length; i++) {
      var item = modelArr[i];
      if (id === item.id) {
        obj.index = i;
        obj.model = item;
        break;
      }
    }
    return obj;
  }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows远程桌面的奇技淫巧

前言 Windows远程桌面简介 远程桌面协议(RDP)是一个多通道(multi-channel)的协议&#xff0c;让使用者连上提供微软终端机服务的计算机(称为服务端或远程计算机) 远程桌面的前置条件 在获取权限后&#xff0c;针对3389进行展开&#xff0c;先查询3389端口是否开启 netstat…

PHP工单预约表单系统小程序源码

&#x1f527;【高效办公新利器】工单预约表单系统大揭秘 &#x1f4bc;【一键提交&#xff0c;工单管理新高度】 你还在为繁琐的工单提交流程头疼吗&#xff1f;工单预约表单系统&#xff0c;让你的工单管理步入高效时代&#xff01;只需简单几步&#xff0c;填写必要信息&a…

记一次线上流量突增问题排查

一.问题 接流量告警出现获取 xx 信息接口调用次数同比往年大促活动猛涨.扩大至 10 倍之多.心里顿时咯噔一下.最近各种严打,顶风作案.某不是摸到电门了.一下子要把自己带走.从此走向求职之路.一时间脑子哇哇的思绪万千. 202x.5.20 大促开门红的调用.这个是往年活动的时候的调用…

app: 和 android:的区别

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

Dynadot 2024年第一季度回顾

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

顶刊文献阅读及代码复现

前提:每个无人机都有 (i)自己的机载计算机,用于执行控制其自身动作所需的计算 (ii)自己的传感器系统,用于测量相对位置和速度, (iii)自己的通信设备,用于与相邻代理进行数据交换。 模型:短期的排斥力、中间范围的速度一致性和长距离的吸引力

昇思MindSpore学习入门-CELL与参数一

Cell作为神经网络构造的基础单元&#xff0c;与神经网络层(Layer)的概念相对应&#xff0c;对Tensor计算操作的抽象封装&#xff0c;能够更准确清晰地对神经网络结构进行表示。除了基础的Tensor计算流程定义外&#xff0c;神经网络层还包含了参数管理、状态管理等功能。而参数(…

【LLM大模型】如何在LlamaIndex中使用RAG?

如何在LlamaIndex中使用RAG 什么是 Llama-Index LlamaIndex 是一个数据框架&#xff0c;用于帮助基于 LLM 的应用程序摄取、构建结构和访问私有或特定领域的数据。 如何使用 Llama-Index ? 基本用法是一个五步流程&#xff0c;将我们从原始、非结构化数据导向基于该数据生成…

1Panel安装教程:使用Linux服务器安装1Panel面板全流程

使用阿里云服务器安装1Panel面板全流程&#xff0c;云服务器操作系统为CentOS 7.9&#xff0c;安装1Panel非常简单&#xff0c;先执行1Panel安装命令&#xff0c;然后在云服务器安全组中开通1Panel默认端口号、安全入口、用户名和密码等操作&#xff0c;阿里云百科整理详细安装…

国产热玛吉射频仪

最近看到国产热玛吉的射频模块。分享一下图片&#xff0c;看起来做工也是普普通通&#xff0c;对比进口的热玛吉射频板&#xff0c;技术水平相差甚远啊

django基于个人BMI的健康饮食食谱推荐系统-计算机毕业设计源码26624

目 录 1 绪论 1.1 研究背景和意义 1.2国内外研究现状 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.1.1技术可行性分析 2.1.2 操作可行性分析 2.1.3经济可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4系统流程分…

孟德尔随机化与痛风

写在前面 今天阅读的文献是多种暴露与某结局的孟德尔随机化&#xff0c;算是以量取胜了。 The effect of metabolism-related lifestyle and clinical risk factors on digestive system cancers in East Asian populations: a two-sample Mendelian randomization analysis …

诸葛亮的七星灯阵 - 单例模式

“运筹帷幄之中&#xff0c;决胜千里之外。一盏明灯&#xff0c;照亮万里江山。” 在蜀汉建兴五年&#xff0c;诸葛亮率军北伐&#xff0c;欲一举扫平魏国。然而&#xff0c;大军行至祁山&#xff0c;却遭遇了前所未有的困境。在这危急时刻&#xff0c;诸葛亮设下了一个神秘的…

初中生物知识点总结(人教版)

第一章 认识生物 一、 生物的特征&#xff1a; 1&#xff0e; 生物的生活需要营养 2&#xff0e; 生物能进行呼吸 3&#xff0e; 生物能排出身体内产生的废物 4&#xff0e; 生物能对外界的刺激做出反应 5&#xff0e; 生物能生长和繁殖 除病毒以外&#xff0c;生物都是由细胞构…

仿写SpringMVC

1.创建简单的注解 1.1 Controller package com.heaboy.annotation;import java.lang.annotation.*;Documented Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) public interface Controller { } 1.2 RequestMapping package com.heaboy.annotation;import …

Qt QWizard新建向导实例

使用QWizard做新建向导&#xff0c;最简单的实例 class MyWizard : public QWizard { public: MyWizard(QWidget* parent nullptr); QWizardPage* createFirstPage(); QWizardPage* createSecondPage(); QWizardPage* createThirdPage(); }; MyWizard::MyWizard(QWidget* par…

Python编程:如何有效等待套接字的读取与关闭

背景介绍 网络编程是现代应用程序开发的重要组成部分&#xff0c;尤其是在大数据和实时通信的背景下。套接字&#xff08;Socket&#xff09;作为网络通信的核心技术&#xff0c;是开发网络应用程序的基础。在Python编程中&#xff0c;如何有效地等待套接字的读取与关闭事件是…

25届最近5年天津工业大学自动化考研院校分析

天津工业大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、初试大纲复试大纲 七、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定教…

AIGC:构筑创意新时代的神奇力量

在当今数字化浪潮中&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;正以其强大的创造力和应用价值&#xff0c;引领着一场前所未有的创意革命。从文本生成到音乐创作&#xff0c;从图像设计到电影制作&#xff0c;AIGC的触角已延伸至文化艺术的各个领域&#xff0c;…

FreeRTOS——任务通知

一、任务通知 1.1 任务通知简介 任务通知&#xff1a;用来通知任务的&#xff0c;任务控制块中的结构体成员变量 ulNotifiedValue就是这个通知值 &#xff08;1&#xff09;使用队列、信号量、事件标志组时都需另外 创建一个结构体 &#xff0c;通过中间的结构体进行间接通信…