cesium入门学习四

news2025/2/5 12:45:13

          怎么加载地图效果文件,地图效果的显示。

          学习总结:

          1.cesium入门学习一-CSDN博客

          2.cesium入门学习二-CSDN博客

          3.cesium入门学习三-CSDN博客

1.怎么加载geojson文件,并在html中显示

 1.1 geojson文件来源:

DataV.GeoAtlas地理小工具系列

直接下载这里的json文件,比如我下载省级的文件。

下载好了,重新在项目列表中,建立一个文件夹geojson,存放json文件

一级目录:

二级目录:

china.json只包含国级,china1.json包含省级。

1.2   json文件放入js中,显示效果以及代码

在index.js文件中导入json 文件。

效果:

代码:

var viewer = new Cesium.Viewer("cesiumContainer");

// 加载 GeoJSON 文件
Cesium.GeoJsonDataSource.load("/geojson/china1.json", {
    clampToGround: true // 贴地显示
})
    .then(function (dataSource) {
        // 将 GeoJSON 数据源添加到 Viewer
        viewer.dataSources.add(dataSource);

        // 缩放到 GeoJSON 数据范围
        viewer.flyTo(dataSource);

        // 自定义实体样式
        var entities = dataSource.entities.values;
        entities.forEach(function (entity) {
            // 设置省界线样式
            if (entity.polygon) {
                // Polygon 的填充样式
                entity.polygon.material = Cesium.Color.YELLOW.withAlpha(0.2);
                entity.polygon.outline = false; // 填充多边形时隐藏默认边界

                // 添加边界线样式
                var hierarchy = entity.polygon.hierarchy.getValue(Cesium.JulianDate.now());
                var positions = hierarchy.positions;

                entity.polyline = new Cesium.PolylineGraphics({
                    positions: positions,
                    width: 2,
                    material: Cesium.Color.BLUE
                });
            }
        });
    })
    .catch(function (error) {
        console.error("加载 GeoJSON 时发生错误:", error);
    });

1.3  鼠标悬停,高亮显示省

效果:

js代码:

//第16个程序:鼠标悬停,高亮显示
var viewer = new Cesium.Viewer("cesiumContainer");

// 加载 GeoJSON 文件
Cesium.GeoJsonDataSource.load("/geojson/china1.json", {
    clampToGround: true // 贴地显示
})
    .then(function (dataSource) {
        // 将 GeoJSON 数据源添加到 Viewer
        viewer.dataSources.add(dataSource);

        // 缩放到 GeoJSON 数据范围
        viewer.flyTo(dataSource);

        // 自定义实体样式
        var entities = dataSource.entities.values;
        entities.forEach(function (entity) {
            if (entity.polygon) {
                // 默认 Polygon 填充样式
                entity.polygon.material = Cesium.Color.YELLOW.withAlpha(0.2);
                entity.polygon.outline = false; // 填充多边形时隐藏默认边界

                // 默认边界线样式
                var hierarchy = entity.polygon.hierarchy.getValue(Cesium.JulianDate.now());
                var positions = hierarchy.positions;

                entity.polyline = new Cesium.PolylineGraphics({
                    positions: positions,
                    width: 2,
                    material: Cesium.Color.BLUE,
                    show: false // 默认隐藏边界
                });
            }
        });

        // 鼠标事件处理
        var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
        var lastHighlightedEntity = null; // 上一次高亮的实体

        handler.setInputAction(function (movement) {
            // 获取鼠标悬停的实体
            var pickedObject = viewer.scene.pick(movement.endPosition);

            if (Cesium.defined(pickedObject) && pickedObject.id && pickedObject.id.polygon) {
                // 当前实体
                var currentEntity = pickedObject.id;

                // 如果有变化,更新样式
                if (lastHighlightedEntity !== currentEntity) {
                    // 恢复上一个实体样式
                    if (lastHighlightedEntity) {
                        lastHighlightedEntity.polygon.material = Cesium.Color.YELLOW.withAlpha(0.2);
                        lastHighlightedEntity.polyline.show = false;
                    }

                    // 高亮当前实体
                    currentEntity.polygon.material = Cesium.Color.RED.withAlpha(0.4);
                    currentEntity.polyline.show = true;

                    // 更新记录
                    lastHighlightedEntity = currentEntity;
                }
            } else {
                // 鼠标移出所有区域,恢复样式
                if (lastHighlightedEntity) {
                    lastHighlightedEntity.polygon.material = Cesium.Color.YELLOW.withAlpha(0.2);
                    lastHighlightedEntity.polyline.show = false;
                    lastHighlightedEntity = null;
                }
            }
        }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
    })
    .catch(function (error) {
        console.error("加载 GeoJSON 时发生错误:", error);
    });

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

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

相关文章

前端开发 -- 自动回复机器人【附完整源码】

一&#xff1a;效果展示 本项目实现了一个简单的网页聊天界面&#xff0c;用户可以在输入框中输入消息&#xff0c;并点击发送按钮或按下回车键来发送消息。机器人会根据用户发送的消息内容&#xff0c;通过关键字匹配来生成自动回复。 二&#xff1a;源代码分享 <!DOCTYP…

2011-2019年各省总抚养比数据

2011-2019年各省总抚养比数据 1、时间&#xff1a;2011-2019年 2、来源&#xff1a;国家统计局 3、指标&#xff1a;行政区划代码、地区、年份、总抚养比(人口抽样调查)(%) 4、范围&#xff1a;31省 5、指标解释&#xff1a;总抚养比也称总负担系数。指人口总体中非劳动年…

【从零开始入门unity游戏开发之——C#篇34】C#匿名函数(delegate )和Lambda表达式

文章目录 一、匿名函数&#xff08;delegate &#xff09;1、什么是匿名函数&#xff1f;2、匿名函数的基本语法2.1 语法2.2 **没有参数的匿名函数&#xff1a;**2.3 **有参数的匿名函数&#xff1a;**2.4 **有返回值的匿名函数&#xff1a;** 3、匿名函数的使用示例3.1 作为参…

脱离电路图编程

SM0.0常开始终吸合 SM0.1&#xff08;特殊中继&#xff09; 常开&#xff1a;闭合一次再断开 常闭&#xff1a;断开一次再闭合 上述是依据电路图编程

人工智能及深度学习的一些题目

1、一个含有2个隐藏层的多层感知机&#xff08;MLP&#xff09;&#xff0c;神经元个数都为20&#xff0c;输入和输出节点分别由8和5个节点&#xff0c;这个网络有多少权重值&#xff1f; 答&#xff1a;在MLP中&#xff0c;权重是连接神经元的参数&#xff0c;每个连接都有一…

OpenGL变换矩阵和输入控制

在前面的文章当中我们已经成功播放了动画&#xff0c;让我们的角色动了起来&#xff0c;这一切变得比较有意思了起来。不过我们发现&#xff0c;角色虽然说是动了起来&#xff0c;不过只是在不停地原地踏步而已&#xff0c;而且我们也没有办法通过键盘来控制这个角色来进行移动…

【ArcGIS Pro】完整的nc文件整理表格模型构建流程及工具练习数据分享

学术科研啥的要用到很多数据&#xff0c;nc文件融合了时间空间数据是科研重要文件。之前分享过怎样将nc文件处理成栅格后整理成表格。小编的读者还是有跑不通整个流程的&#xff0c;再来做一篇总结篇&#xff0c;也分享下练习数据跟工具&#xff0c;如果还是弄不了的&#xff0…

linux-21 目录管理(一)mkdir命令,创建空目录

对linux而言&#xff0c;对一个系统管理来讲&#xff0c;最关键的还是文件管理。那所以我们接下来就来看看如何实现文件管理。当然&#xff0c;在文件管理之前&#xff0c;我们说过&#xff0c;文件通常都放在目录下&#xff0c;对吧&#xff1f;所以先了解目录&#xff0c;可能…

vulnhub jangow靶机

1.扫描靶机IP arp-scan -l如果扫不到靶机的话根据以下配置 启动时点击第二个 按回车 继续选择第二个 按e进入编辑 删除"recovery nomodeset" 在末尾添加"quiet splash rw init/bin/bash" Ctrlx 启动进入如下界面 passwd修改root密码 重启电脑登录root修…

惠普HP proliant DL380 G6服务器使用

惠普HP proliant DL380 G6服务器使用经历 前言 HP ProLiant DL380 G6是一款机架式服务器&#xff0c;标配1个Xeon E5504处理器。 已被列入“高耗能老旧通信设备淘汰指导目录” 配置 基本类别 类别 机架式 结构 2U 内存 内存类型 DDRIII 内存大小 4GB&#xff08;单条插槽…

java 斐波那契查找,涵盖原理、算法分析、实现细节、优缺点、应用场景等

一、定义 斐波那契查找&#xff08;Fibonacci Search&#xff09;是一种基于斐波那契数列的查找算法&#xff0c;适用于已排序的数组。它利用斐波那契数列的性质来减少比较次数&#xff0c;并且能够在某些条件下比二分查找更快。 更多优质资源推荐&#xff1a; http://sj.yso…

内网学习:工作组用户与权限

目录 一、本地用户组介绍本地工作组介绍用户与组的关系 二、四种用户类型及权限比较本地系统最高权限&#xff08;System账户&#xff09;特性Administrator与System账户的区别 本地最高管理员&#xff08;Administrator用户&#xff09;特性 本地普通管理员特性 本地普通用户特…

图片转成oled使用的字模数据

目录 oled尺寸 如何生成用到的图片 图片转字模 1.首先用Img2Lcd转成bmp单色图片 2.然后用PCtoLCD2002把单色图片转字模 oled尺寸 我使用0.96寸oled模块&#xff0c;对应着的分辨率是128*64&#xff0c;对应着宽高像素比128*64。所以不是随意一张图片就能用的&#xff0c;…

PTPVT 插值说明

文章目录 PTPVT 插值说明 PTPVT 插值说明PVT Hermite插值PVT 三次多项式插值PT 插值Sin轨迹测试结果PVT Hermite插值结果PVT 三次多项式插值结果PT 插值结果 用户轨迹测试结果PVT Hermite插值结果PT 插值结果 PTPVT 插值说明 PT模式&#xff1a; 位置-时间路径插值算法。 PVT模…

Mac安装多个版本node、java、python 等开发软件环境,安装、卸载、升级多个数据库

安装多个版本node、java、python 等开发软件环境 使用nvm&#xff08;Node.js Version Manager&#xff09;来管理多个Node.js版本。 使用jenv来管理多个Java版本。 使用pyenv来管理多个Python版本。 以下是安装和使用这些版本管理器的基本步骤&#xff1a; 1. 安装多个版本…

【深度学习】卷积网络代码实战ResNet

ResNet (Residual Network) 是由微软研究院的何凯明等人在2015年提出的一种深度卷积神经网络结构。ResNet的设计目标是解决深层网络训练中的梯度消失和梯度爆炸问题&#xff0c;进一步提高网络的表现。下面是一个ResNet模型实现&#xff0c;使用PyTorch框架来展示如何实现基本的…

添砖java第四更@(+)@

今天的学习内容主要是围绕着实体类来进行的&#xff0c;就是说在java里面我们常常会把数据存放和方法分别存放在不同的类里面。 首先就是关于实体类是什么&#xff0c;实体类就是只提供了get方法,set方法,和默认构造器的类。 接着就是熟悉java与别的语言的不同之处就在于它是…

算法题(19):多数元素

审题&#xff1a; 数组不为空且一定存在众数。需要返回众数的数值 思路&#xff1a; 方法一&#xff1a;哈希映射 先用哈希映射去存储对应数据出现的次数&#xff0c;然后遍历找到众数并输出 当然也可以在第一次映射的过程中就维护一个出现次数最多的数据&#xff0c;这样子就可…

电子商务网站的三层架构的理解和实践

在电子商务领域&#xff0c;网站架构的设计对于系统的稳定性、可扩展性和用户体验至关重要。其中&#xff0c;三层架构作为一种经典的设计模式&#xff0c;被广泛应用于各类电子商务网站中。本文将从理论、理解和实践三个方面&#xff0c;详细探讨电子商务网站的三层架构。 一、…

LVS 负载均衡原理 | 配置示例

注&#xff1a;本文为 “ LVS 负载均衡原理 | 配置” 相关文章合辑。 部分内容已过时&#xff0c;可以看看原理实现。 使用 LVS 实现负载均衡原理及安装配置详解 posted on 2017-02-12 14:35 肖邦 linux 负载均衡集群是 load balance 集群的简写&#xff0c;翻译成中文就是负…