cesium 绘制工具 鼠标提示tips工具组件

这篇具有很好参考价值的文章主要介绍了cesium 绘制工具 鼠标提示tips工具组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本专题主要是针对学习cesium小伙伴,在项目中实践总结的一些工具,以及会详细介绍,知识和封装的原理,废话不多说,此文介绍的是,鼠标提示tips工具组件,在项目中使用会优化交互效果,对客户友好,例如标绘工具,地图操作。


一、PlotDrawTip组件

之前在网上看到的都是,通过动态创建,编辑div位置,定位到鼠标的位置,当然效果也能实现,但是发现一个问题就是鼠标移动过快,鼠标会浮到div上,导致div静止,位置已经错位。
cesium 绘制工具 鼠标提示tips工具组件,cesium,计算机外设,vue.js,javascript

PlotDrawTip提示组件的思路是采用的,场景渲染事件 实时更新标签的位置 使其与笛卡尔坐标一致,ui样式单独封装成tip.vue
组件,其原理和自定义label组件类似。

二、调用方式

import PlotDrawTip from "@/utils/PlotDrawTip"

初始化
this.plotDrawTip = new PlotDrawTip(this.viewer);

设置文本内容
this.plotDrawTip.setContent(['左键点击开始绘制'])//setCentent接受的是文本array数组,看自己的需要

更新笛卡尔坐标位置
this.plotDrawTip && this.plotDrawTip.updatePosition(position);

销毁提示组件
this.plotDrawTip.remove();


·

1.PlotDrawTip类

代码如下(示例):

import Vue from "vue"

import TipVue from "./Tip.vue"
let TipVm = Vue.extend(TipVue)

//绘制鼠标提示类
export default class PlotDrawTip {
    constructor(viewer) {
        this.viewer = viewer;
        //创建模板
        this.vmInstance = new TipVm({
            propsData: {
                contents: []
            }
        }).$mount(); 

        viewer.cesiumWidget.container.appendChild(this.vmInstance.$el); //将字符串模板生成的内容添加到DOM上
        this.addPostRender();
    }

    setContent(contents) {
        this.vmInstance.contents = contents;
    }

    updatePosition(newPosition) {
        this.position = newPosition;
    }

    //添加场景事件
    addPostRender() {
        this.viewer.scene.postRender.addEventListener(this.postRender, this);
    }

    //场景渲染事件 实时更新标签的位置 使其与笛卡尔坐标一致
    postRender() {
        if (!this.vmInstance.$el || !this.vmInstance.$el.style) return;
        if (!this.position) return;

        const canvasHeight = this.viewer.scene.canvas.height;
        const windowPosition = new Cesium.Cartesian2();
        Cesium.SceneTransforms.wgs84ToWindowCoordinates(this.viewer.scene, this.position, windowPosition);
        this.vmInstance.$el.style.bottom = canvasHeight - windowPosition.y - 20 + "px";
        const elWidth = this.vmInstance.$el.offsetWidth;
        this.vmInstance.$el.style.left = windowPosition.x + 50 + "px";
    }

    //移除标绘
    remove() {
        this.viewer.cesiumWidget.container.removeChild(this.vmInstance.$el); //删除DOM
        this.viewer.scene.postRender.removeEventListener(this.postRender, this); //移除事件监听
    }
}

2.Tip.vue组件

样式根据自己的情况修改

<template>
  <div class="plot-draw-tip-container">
    <div  v-for="(text,index) in contents" :key="index">{{text}}</div>
  </div>
</template>
<script>
export default {
  name: "PlotDrawTip",
  props: {
    contents: {
      type: Array
    }
  }
};
</script>

<style lang="css" scoped>
.plot-draw-tip-container {
  position: absolute;
  background: rgba(0, 0, 0, 0.637);
  padding: 6px;
  color: white;
    pointer-events: none;
}

.plot-draw-tip-container::before {
  position: absolute;
  content: "";
  top: calc(50% - 10px);
  left:  -10px;
  border-bottom: 10px solid transparent;
  border-top: 10px solid transparent;
  border-right: 10px solid rgba(0, 0, 0, 0.637);
}
</style>

3.效果

效果如下,此前鼠标覆盖div的bug也解决了
cesium 绘制工具 鼠标提示tips工具组件,cesium,计算机外设,vue.js,javascript

总结

此文中的tips组件,原理简单,可以拿来即用,在项目中使用,后边的文章中,会陆续更新cesium的工具,以及案例,欢迎大家关注,,如有问题可以在评论区留言,或者私信,我会及时回复。文章来源地址https://www.toymoban.com/news/detail-842147.html

到了这里,关于cesium 绘制工具 鼠标提示tips工具组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机知识 小tips

    目录 什么是R语言? 电脑长期不关机会产生什么影响? nlp是什么? cv是什么? R语言是一种用于数据分析和统计建模的编程语言和环境。 它由 新西兰奥克兰大学 的Ross Ihaka和Robert Gentleman于1995年开发而来。R语言是一个开源的语言, 它的特点是提供了许多用于数据处理、统计

    2024年02月04日
    浏览(76)
  • cesium学习记录08-鼠标绘制实体(点,线,矩形,圆,多边形)

    上一篇学习了创建实体的一些基础知识,但有时还需要我们使用鼠标进行手动绘制,这一篇就来进行鼠标绘制实体的实现(点,线,矩形,圆,多边形)。 (这里需要掌握三个知识点,一是上一篇中的创建实体、二是鼠标事件、三是回调函数) 既然是鼠标绘制,自然离不开

    2024年02月12日
    浏览(40)
  • QGraphicsView制作绘制图元工具资料整理(鼠标、平移、缩放)

    QGraphicsView制作绘制工具资料整理 继承自QGraphicsView的类中使用QGraphicsSceneMouseEvent 简单显示图片的示例 Qt之QGraphicsView入门篇 Qt之QGraphicsView入门篇 鼠标事件和滚轮事件 鼠标事件和滚轮事件 QGraphicsItem的缩放 QGraphicsItem的缩放 QT官方文档:QGraphicsItem Class QGraphicsItem Class Qt之QGraph

    2024年02月09日
    浏览(28)
  • 【计算机图形学】【实验报告】太阳系绘制、B样条曲线绘制(附代码)

    实 验 报 告 一、实验目的 掌握三维图形的显示原理和方法,掌握三维观察的原理和方法; 掌握OpenGL中矩阵堆栈函数的使用,会使用堆栈函数进行复杂场景的组装。 掌握OpenGL中三维观察变换常用的函数的使用方法,了解三维模型的贴图方法; 掌握自由曲线的生成方法,熟练

    2024年02月10日
    浏览(31)
  • 【计算机图形学】作业:Bresenham 法绘制圆

    请采用 Bresenham 法绘制圆(共 30 分)。要求: (1) 给出算法的文字描述(共 15 分)。 (2) 编写函数,在给定圆心坐标和半径的情况下,计算出圆 上所有的点,并将这些点存储在数组中(共 15 分)。 输入圆的圆心(xc,yc),半径r。数组circlepoints为输出,保存圆上所有点。 初

    2024年01月24日
    浏览(37)
  • 计算机图形学:绘制一个3d交互场景(1)

    OpenGL作为一种图形与硬件的接口,与其他图形程序开发工具相比较,它提供了众多图形函数,直观的编程环境简化了三维图形的绘制过程,使用OpenGL搭建一个三维场景,能够通过输入设备与场景内物体交互。 豪华单间 配置环境:vs22+freeglut库 1.绘制墙体使其成为封闭空间,在

    2024年02月11日
    浏览(83)
  • vue项目引入百度地图BMapGL鼠标绘制和BMap辅助工具

    目录 引言 1、引用百度地图 2、在项目中使用百度地图 2-1、页面结构部分 2-2、js逻辑部分 3-1、页面结构部分 Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它旨在平易近人、灵活且可扩展,重点是声明式渲染和基于组件的架构。Vue 的反应性和可组合性使其成为开发复

    2024年01月16日
    浏览(29)
  • 计算机图形学中的曲线问题——拉格朗日插值曲线绘制实践

    限于篇幅,我们将在这篇文章中介绍拉格朗日插值曲线绘制实践,主文章链接: GGN_2015 计算机图形学中的曲线问题 在主文章中我们已经介绍了拉格朗日插值函数的绘制方法。给定一个函数必须通过的点的集合,保证任意两点 x x x 指不同,我们就能构造出一条拉格朗日插值函

    2024年02月14日
    浏览(33)
  • 计算机图形学:三次Bezier曲线的绘制(算法原理及代码实现)

    一、实现方案        贝塞尔曲线原理:贝塞尔曲线是计算机图形图像造型的基本工具,是图形造型运用得最多的基本线条之一。它通过控制曲线上的四个点(起始点、终止点以及两个相互分离的中间点)来创造、编辑图形。其中起重要作用的是位于曲线中央的控制线。这条

    2024年02月11日
    浏览(37)
  • FifthOne:计算机视觉提示和技巧

              欢迎来到我们每周的FiftyOne提示和技巧博客,我们回顾了最近在Slack,GitHub,Stack Overflow和Reddit上弹出的问题和答案。FiftyOne是一个开源机器学习工具集,使数据科学团队能够通过帮助他们策划高质量数据集、评估模型、查找错误、可视化嵌入。         FiftyOne 

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包