Cesium入门(三):加载WMS地图服务

2023-05-16

本章介绍Cesium Viewer控件的是如何加载地图的,并以GeoServer服务器为例演示了WMS服务的加载过程。

主要包括以下内容:

  • ImageryProvider
  • 加载GeoServer发布的WMS服务

在Cesium入门(二):Viewer控件参数与外观定制中,通过设置Viewer的构造参数,去除了一些小组件和功能按钮,在浏览器中显示出了一个非常简洁的可交互界面。尽管界面上没有显示baseLayerPicker组件,但是地球上面还是贴上了默认的Bing地图,这一切都是怎么实现的呢?如果想要换上其他的地图或者加载显示自己的地图时又该怎么办呢?

事实上,Cesium Viewer除了提供基本的图层拾取器来选取不同的地图服务之外,可以在构造Viewer对象时通过ImageryProvider来任意选用公开的地图服务,还可以通过操作imageryLayers图层集合加载自定义的地图。

1. ImageryProvider

在众多的Viewer构造参数中,有一个imageryProvider参数用来设置地球上面将要覆盖的图层:

Name

Type

Description

baseLayerPicker

Boolean

是否创建BaseLayerPicker组件

imageryProvider

ImageryProvider

使用的图像提供者,仅baseLayerPicker设置为false时有效

根据参数定义,baseLayerPicker默认值为true,此时Viewer会显示基本图层指示器,创建默认的图层集合imageryLayers,并选择其中的第一个图层来覆盖地球表面。

当baseLayerPicker为假时,Viewer不创建基本的图层指示器,然后清空图层集合imageryLayers,并将imageryProvider所指的图层对象加入imageryLayers图层集合,当页面需要渲染时,Viewer会使用这个图层作为地球表面的覆盖图层。

此时,若imageryProvider为false,则会显示一个没有任何覆盖物的蓝色地球。

若imageryProvider为空或者缺失未定义,Viewer就会调用createWorldImagery()函数来自动创建一个Bing地图来覆盖地球,这也是为什么在Cesium入门(二):Viewer控件参数与外观定制中没有定义imageryProvider但是还是出现了Bing地图的原因。

2. 加载GeoServer发布的WMS服务

从上节可以知道,在Viewer构造参数中设置imageryProvider对象,就可以去掉默认的背景地图,换上自已定义的地图服务商了。WebMapServiceImageryProvider正好可以完成对一个Web Map Service (WMS)服务的封装工作,其主要的初始化选项如下:

Name

Type

Description

url

Resource | String

地图服务的URL

layers

String

图层的名称,可用逗号分开

parameters

Object

地图获取功能GetMap所需要的参数

minimumLevel

Number

最小的缩放级别

maximumLevel

Number

最大的缩放级别

crs

String

CRS定义,WMS版本 >= 1.3.0.

srs

String

SRS定义,WMS版本为1.1.0 或 1.1.1

以GeoServer为例,在“图层预览”页面以Openlayer方式预览选中的图层,然后在浏览器“Web开发人员工具”中查看WMS服务的访问地址,如:

http://localhost:8080/map/wms?service=WMS&version=1.1.0&request=GetMap&layers=xian:satellite16&bbox=1.1981657057757802E7,3988178.3878073078,1.2226255548270363E7,4130045.512304593&width=768&height=445&srs=EPSG:3857&styles=&format=application/openlayers

从这个地址中提取url、layers、service、format等参数,构造一个ImageryProvider就可以在地球上看到自己的地图了。

主要代码如下:

<div id="cesiumContainer"></div>
<script>
    var viewer = new Cesium.Viewer("cesiumContainer", {
        //sceneMode : Cesium.SceneMode.SCENE2D,        
        animation : false,
        baseLayerPicker : false,
        fullscreenButton : false,
        vrButton : false,
        geocoder : false,
        homeButton : false,
        infoBox : false,
        sceneModePicker : false,
        selectionIndicator : false,
        timeline : false,
        navigationHelpButton : false,
        skyBox : false,

        imageryProvider : new Cesium.WebMapServiceImageryProvider({
            url : 'http://localhost:8080/geoserver/wms',
            layers : 'xian:satellite16', 
            parameters: {
                service : 'WMS',
                format: 'image/png',
                transparent: true,
              }  
        }),
    });

    viewer.camera.flyTo({
        destination : Cesium.Cartesian3.fromDegrees(106.23, 38.65, 100000)
    });
</script>

在这段代码的最后,添加了一段控制摄像机飞行的代码,里面的三个参数分别为指定地点的经纬度和摄像机的高度。把经纬度设置为所加图层的中心点,然后刷新界面,就可以看到摄像机自动飞行到了指定的地点,简直是太酷了,快点试试吧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cesium入门(三):加载WMS地图服务 的相关文章

  • 基于C++的通讯管理系统

    1 系统需求 通讯录是一个可以记录亲人 好友信息的工具 本教程主要利用C 43 43 来实现 个通讯录管理系统 系统中需要实现的功能如下 添加联系人 向通讯录中添加新人 xff0c 信息包括 姓名 性别 年龄 联系电话 家庭住址 最多记录1
  • 存储过程进阶(vb.net+SQL Server2008环境)

    写过一篇 存储过程入门 的博客 xff0c 那仅仅是入门 xff0c 下面和大家一起深入学习存储过程 xff08 也许以后还会有更深入 xff09 以经典的注册为例子 xff0c 篇幅有限只写了核心部分 xff0c 其他略过 无参数无返回值
  • 基于C++的职工管理系统

    1 管理系统需求 职工管理系统可以用来管理公司内所有员工的信息 本教程主要利用C 来实现一个基于多态的职工管理系统 公司中职工分为三类 普通员工 经理 老板 显示信息时 需要显示职工编号 职工姓名 职工岗位 以及职责 普通员工职责 完成经理
  • C++提高编程

    本阶段主要针对C 43 43 泛型编程和STL技术做详细讲解 xff0c 探讨C 43 43 更深层的使用 1模板 1 1模板的概念 模板就是建立通用的模具 xff0c 大大提高复用性 例如生活中的模板 一寸照片模板 1 2函数模板 C 4
  • 在卸载东西时,一不小心把window资源管理器给结束,电脑黑屏了。

    今天在卸载东西时 xff0c 有个卸载的残旧文件删除不了 xff0c 显示资源管理器正在使用 xff0c 然后我二话不说直接杀进程去了 xff0c 一不小心将资源管理器的进程给就地正法 xff0c 删完之后电脑直接黑屏 话不多说 xff0c
  • 什么是 JDK?

    JDK 是 Java Development ToolKit 的简称 xff0c 也就是 Java 开发工具包 JDK 是整个 Java 的核心 xff0c 包括 Java 运行环境 xff08 Java Runtime Envirnmen
  • 对《Java编程思想》读者的一点建议

    Java 编程思想 这本书在豆瓣的评分高达 9 1 分 xff0c 但我总觉得有点虚高 记得刚上大学那会 xff0c 就在某宝上买了一本影印版的 Java 编程思想 xff0c 但由于初学 Java xff0c 对编程极度缺乏信心 xff0
  • Caused by: java.lang.NumberFormatException: For input string: "performance-now.js"

    DEBUG 2019 01 08 10 43 53 507 org springframework web servlet DispatcherServlet Handler execution resulted in exception
  • spring mvc执行过程

    springMVC执行的过程 流程如下 xff1a 用户发起请求到前端控制器 xff08 DispatcherServlet xff09 xff0c 该控制器会过滤出哪些请求可以访问Servlet 哪些不能访问 就是url pattern的
  • 如何解决电脑无法访问个别网站

    今天重装系统后 xff0c 将所有的系统软件都安装了最新的版本 xff0c 在上网的过程中 xff0c 发现了一个奇怪的问题 xff0c 电脑可以访问网络 xff0c 但却有很多国内的网站都访问不了 xff0c 换了不同的浏览器测试也是同样
  • Springmvc基础

    springmvc入门 springmvc概述 controller层的框架 xff0c 代替Servlet xff0c 处理请求和响应 springmvc快速入门 64 Controller xff1a 将Bean交给Spring管理 x
  • Ocelot简易教程(五)之集成IdentityServer认证以及授权

    Ocelot简易教程目录 Ocelot简易教程 xff08 一 xff09 之Ocelot是什么Ocelot简易教程 xff08 二 xff09 之快速开始1Ocelot简易教程 xff08 二 xff09 之快速开始2Ocelot简易教程
  • 拿什么拯救你,我的团队

    一向认为软件开发就像是在搭房子或者说是在构建一座宏伟的大厦 xff0c 当然这根据工程的大小而定 其实细细想来软件工程的很多地方都是借助于建筑方面的知识 xff0c 就从 工程 这个词来说就是从建筑学引进的 xff0c 类似的还有设计模式
  • ubuntu开机跳过输入密码登录和默认桌面显示,直接启动图形应用程序,替换默认图形桌面

    1 自动登录 Ubuntu开机自动登录 xff0c 这个应该没什么难点 xff0c 自行百度 2 关闭默认的桌面和设置为自己的图形程序 到 usr share xsessions目录下 cd usr share xsessions ls 可
  • ubuntu服务器修改ssh登录用户名及端口

    1 如果默认的ssh登录用户名为ubuntu xff0c 需要开通root账户 xff0c 添加密码 xff1a passwd root 还需修改配置 xff0c 具体方法 xff1a vi etc ssh sshd config 确保一下
  • SpringBoot 集成 WebSocket 实现服务端消息主动推送

    目录 1 什么是websocket xff1f 2 使用Springboot开始整合webSocket3 前端websocket客户端4 测试验证 项目中用到了websocket进行大屏数据实时获取 xff0c 今天写个聊天室demo来进行
  • mysql authentication_string更改密码不成功的问题

    最近新买了电脑 xff0c 再重新安装mysql过程中 xff0c 发现user字段没有了password字段 xff0c update root密码失败 xff0c 发现最新版本更新为authentication string xff0c
  • vs qt 调试 输出 打印 到输出窗口 或控制台窗口

    printf只能输出 到控制台窗口 一 qt Qt日志重定向 xff08 将qDebug信息输出到界面控件 xff09 wx61a586bb4cf91的技术博客 51CTO博客 Windows版qt中 xff0c 如果是一个控制台应用程序
  • import matplotlib ImportError: cannot import name 'is_string_like'

    Traceback most recent call last File 34 321 py 34 line 2 in lt module gt import matplotlib pyplot as pt File 34 C Progra
  • Java多线程

    一 基础概念 1 CPU核心数和线程数 多核心指的是单芯片多处理器 xff0c 将多个CPU集成到同一个芯片内 xff0c 不同的CPU可以单独的运行程序 目前主流的CPU有四核 六核 八核 增加核心数目的是为了增加线程数 xff0c 一般

随机推荐

  • C++实现人脸识别(百度云平台)

    C 43 43 实现人脸识别 xff08 百度云平台 xff09 项目资源下载 项目思路 xff1a opencv 采集人脸照片 xff0c 将照片发送至百度智能云平台 xff0c 百度云平台与人脸库中的数据进行比较并返回结果 一 项目环境
  • 一文学会用 Docker 和 Docker Compose 部署 Node.js 微服务

    后端业务逻辑一般比较复杂 xff0c 全堆在一个 http 服务里不太现实 xff0c 所以基本都会用微服务架构来开发了 比如这样 xff1a 把不同模块的业务逻辑拆分到不同微服务里 xff0c 然后它们和主服务通过 tcp 通信 xff0
  • c++实现天干地支纪年法

    历史课上 老师 xff1a 1894 xff0c 甲午年 xff0c 中日发生甲午战争 学生 xff1a 家务是什么 xff1f 老师 xff1a 甲午 xff01 天干地支纪年法 学生 xff1a 什么是田赶地址 xff1f 老师 xff
  • 对三层和MVC的认识过程

    三层架构就是 MVC xff01 起初老师总说三层 MVC xff0c MVC 三层架构 所以开始的时候脑子就一个概念 xff1a 三层就是 MVC xff0c MVC 就是三层架构 而且想想也合理啊 xff0c 都是 三 MVC 是三个字
  • Spring入门详解(一)如何配置一个简单的spring项目

    关于spring的一些概念 xff0c 网上已经有很多的说明 xff0c 本系列不会做太多的描述 xff0c 重心在如何配置上 一 准备工作 1 安装JDK xff0c 配置环境 本来不想写这条的 想了想 xff0c 还是写上 2 下载开发
  • 超简洁的群晖交叉编译教程

    超简洁的群晖交叉编译教程 最近把一个群晖的NAS放在校园网里的时候遇到了锐捷认证的问题 xff0c 找了一下没有现成的程序可以拿来用 xff0c 然后自己交叉编译一个mentohust来用 1 环境 Ubuntu20 04 xff0c 先去
  • 基于docker部署nextcloud及其升级和问题修复

    之前用docker部署了一个版本的nextcloud xff0c 但是当时版本中存在一些bug xff0c 所以想升级一下 油管上有博主直接在nextcloud设置里更新的而且能用 这是地址 xff0c 懂的都懂 xff0c 但是我在nex
  • TFRecord的一些用法

    1 TFRecord的用法 首先 xff0c TFRecord是把你的数据存成文件的一个东西 所以首先要有个写文件的东西 xff0c 就是 writer span class token operator 61 span tf span c
  • rsync --exclude或者--exclude-from的路径问题

    先开个头 xff0c 注意 的使用 假设有 my src dir a 把 my src dir复制到 my dst dir xff0c 结果 my dst dir my src dir a rsync a my src dir my dst
  • Sentry迁移:从一台机器到另一台机器

    搜了一下 xff0c 目前写部署的帖子很多 xff0c 但是没找到比较完善的迁移的帖子 xff0c 记一下自己的方法吧 思路 因为现在基本都是使用docker部署 xff0c 所以常规思路大概是docker容器的迁移 xff0c 但是现在s
  • Android studio 2.3.3+Dlib

    最近因为需要 xff0c 尝试着将Dlib移植到android上 android小白一枚 xff0c 做之前没接触过android xff0c 所以就用了别人说比较好的android studio 最新稳定版 xff08 windows下
  • 用verilog实现L293D 驱动板接口

    课程实验做了一个蓝牙智能小车 xff0c nexys4开发板 xff0c MIPSfpga xff08 一个在 FPGA 上实现的商业 MIPS 处理器软核 xff0c Imagination Technologies公司提供给高校免费使用
  • 斐讯k2p openwrt固件改双WAN口

    原理参考教你玩转K2P A1 A2 官改版VLAN 步骤 xff1a network配置 xff0c etc config network里把wan的ifname由原来的eth1改成eth1 2增加wan2 xff0c eth1 3dhcp
  • windows 10安装Anaconda后pip报SSL错解决

    问题 新装的系统 xff0c 安装anaconda python 61 3 7 后 pip install xxx pip is configured with locations that require TLS SSL however
  • JSP中文乱码问题终极解决方案

    在介绍方法之前我们首先应该清楚具体的问题有哪些 xff0c 笔者在本博客当中论述的 JSP 中文乱码问题有如下几个方面 xff1a 页面乱码 参数乱码 表单乱码 源文件乱码 下面来逐一解决其中的乱码问题 一 JSP 页面中文乱码 在 JSP
  • ubuntu lightdm test用户自动登陆

    1 编辑 etc lightdm lightdm conf d 50 myconfig conf 内容 SeatDefaults autologin user 61 test 注意此处是自己要登陆的用户名字
  • 猴小萌的博客开通啦

    多年痴迷计算机技术 xff0c 孜孜不倦地学习着计算机的一切 xff0c 享受着计算机带给我的乐趣和满足感 然而有一天 xff0c 突然发现我所获得的知识和问题的答案基本上全部都来自于网络 xff0c 却从来没有为社区奉献过 xff0c 上
  • Cesium入门(一):第一张Cesium页面

    本章主要讲述如何下载和使用Cesium xff0c 编写完成自己的第一张Cesium应用页面 主要从以下几个方面展开叙述 xff1a 下载和部署CesiumJS编写第一张Cesium页面 1 下载和部署CesiumJS CesiumJS是一
  • Cesium入门(二):Viewer控件参数与外观定制

    本章主要介绍Cesium Viewer控件的选项参数 xff0c 以及如何对Viewer的外观进行定制 主要包括以下内容 xff1a Viewer控件Viewer选项参数定制Viewer外观界面 1 Viewer控件 Viewer是构建Ce
  • Cesium入门(三):加载WMS地图服务

    本章介绍Cesium Viewer控件的是如何加载地图的 xff0c 并以GeoServer服务器为例演示了WMS服务的加载过程 主要包括以下内容 xff1a ImageryProvider加载GeoServer发布的WMS服务 在Cesi