Three.js点击地图动态标注

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

首先来看看效果 

动态图像实时标注,javascript,3d,前端

效果目前就是这样。实现这种效果也借用了很多别人的代码,这里我就只说动态添加怎么来的。

首先肯定是创建射线,获得你点击的那个区域,同时在生成地图本身的时候就给mesh对象添加上相应的mesh和center,这里我用的都是各个行政区划的省会。

var loader = new THREE.FileLoader()
        loader.setResponseType('json');
        loader.load("http://26.26.26.1:8099/china.json", (data) => {
            data.features.forEach((middle) => {
                var height1 = 2
                var height2 = -0.2
                var name = middle.properties.name
                var center = middle.properties.center
...
                meshGroup.add(ExtrudeMesh(middle.geometry.coordinates, height1, name, center))
            })
        })
    var mesh = new THREE.Mesh(geometry, material);
    mesh.name = name
    mesh.center = center
    return mesh;

然后就是当点击的时候给对应的位置添加上光圈和棱柱还有标签

        var label;
        var mesh;
        var lengzhu;
        var chooseMesh = null;//标记鼠标拾取到的mesh
        function choose(event) {
            scene.remove(mesh)
            scene.remove(lengzhu)
            scene.remove(label)
...
            var pos;
            // 光圈
            pos = intersects[0].object.center
            var size = 1.2;//大小根据地图尺寸范围设置或者说相机渲染范围
            mesh = cityPointMesh(size, pos[0], pos[1]);
            mesh.position.z = 2 + 2 * 0.01;

            // 棱锥
            lengzhu = ConeMesh(size, pos[0], pos[1])
            lengzhu.position.z = 2 + 2 * 0.01;

            // 标注
            label = CreateDivByCSS2(intersects[0].object.name, pos[0], pos[1], 2.1)
           
            scene.add(mesh)
            scene.add(lengzhu)
            scene.add(label)
        }
        addEventListener('click', choose); // 监听窗口鼠标单击事件

在每一次点击的时候都对上一次点击的相应对象进行移除,保证在整个画面中都只有一个棱柱、标签和光圈。文章来源地址https://www.toymoban.com/news/detail-554041.html

到了这里,关于Three.js点击地图动态标注的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 用Three.js实现3D中国地图的可视化大屏

    在前端开发中,使用Three.js库可以轻松创建各种令人印象深刻的3D效果。本文将介绍如何使用Three.js库创建一个令人惊叹的3D中国地图可视化大屏。我们将使用JavaScript和Three.js来呈现中国地图,并添加一些交互功能。 首先,我们需要在HTML页面中引入Three.js库。你可以从官方网站

    2024年02月03日
    浏览(94)
  • three.js实现鼠标点击控制物体移动(带动画效果,位置精确)

    通过查阅各种资料,最终确定解决方案,动画效果使用gsap组件库实现,也可不用,代码稍作修改即可。解决鼠标点击坐标偏移问题,复制可直接运行。 完整代码如下:

    2024年02月07日
    浏览(56)
  • 【Three.js】Three.js中的纹理—图像应用和属性调整

      Three.js是一种强大的JavaScript库,用于创建基于Web的交互式3D图形和动画。在Three.js中,纹理是一项重要的功能,它允许我们将图像应用到几何体对象上,并通过调整纹理的属性来实现更丰富的视觉效果。 本文将介绍Three.js中的纹理功能,并演示如何将图片作为纹理应用到几何

    2024年02月15日
    浏览(54)
  • three.js 点击交互事件 含解决点击的物体与看到的不一致问题(非全屏/多边形偏移)

    在 three.js 中,可以通过添加事件监听器来实现点击交互事件。具体步骤如下: 通过以上方法,可以实现 three.js 中的点击交互事件,并解决点击的物体与看到的不一致问题。

    2024年02月06日
    浏览(62)
  • vue2+three.js+blender(实现3d 模型引入并可点击效果)

    2023.9.13今天我学习了如何把3d建模里面的模型引入到vue中,并可以实现拖动,点击的效果: 首先安装: npm install three 相关代码如下:  如果没有图片可以去 Three.js--》建模软件如何加载外部3D模型?_threejs加载3d模型_亦世凡华、的博客-CSDN博客

    2024年02月03日
    浏览(61)
  • [JavaScript游戏开发] 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测

    第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 第三章 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测 第四章 绘制Q版地图、键盘上下左右地图场景切换 本章内容融合了第一章、第二章的部分内容,

    2024年02月15日
    浏览(44)
  • 【FAQ】关于JavaScript版本的华为地图服务Map的点击事件与Marker的点击事件存在冲突的解决方案

    创建地图对象,并添加marker标记,对map和marker均添加了点击事件; body script function initMap() { // 创建地图对象 const map = new HWMapJsSDK.HWMap(document.getElementById(\\\'map\\\'), { center: { lat: 39.36322, lng: 116.3214 }, zoom: 8, }); map.on(\\\'click\\\', handleMapClick); ``` 经下方的Gif图可看出,在点击marker标记时不会

    2023年04月26日
    浏览(51)
  • VUE使用Three.js实现模型,点击交互,相机旋转视角跟随移动(Threejs中使用Tweenjs,含demo源码)

    目录 一、Three.js是什么? 二、VUE简单使用Three.js步骤 1.npm安装 2.template模板 3.引入库 4.定义全局变量 5.初始化场景 6.初始化相机 7.初始化灯光 8.初始化渲染器 9.创建模型(这里我搭建的模型是一个简单双面货架模型) 10.根据浏览器窗口自适应 11.初始化函数,页面加载完成时调用

    2024年02月03日
    浏览(63)
  • [JavaScript游戏开发] 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示)

    第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 第三章 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测 第四章 绘制Q版地图、键盘上下左右地图场景切换 带大家回顾下第一章的内容。 使用JavaScript绘

    2024年02月16日
    浏览(44)
  • JavaScript实现点击复制(JS访问剪贴板相关)

    一、具体代码 ​ 网页前端开发中有时会出现这样的场景:让用户点击某个按钮,然后就能直接复制对应的文本内容,让用户可以将文本内容粘贴到想要粘贴的地方,常用于分享功能模块中。如果想要实现这种效果就需要我们去访问用户的剪贴板,然后把想要复制的内容写入

    2024年02月11日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包