learning_cesium/加载WMS服务.html

122 lines
5.1 KiB
HTML
Raw Permalink Normal View History

2024-03-19 18:06:25 +08:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="./Build/Cesium/Cesium.js"></script>
<link href="./Build/Cesium/Widgets/widgets.css" rel="stylesheet" />
<style>
@import url(./Build/Cesium/Widgets/widgets.css);
html,
body,
#cesiumContainer {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
</style>
<!-- <script src="https://cesium.com/downloads/cesiumjs/releases/1.68/Build/Cesium/Cesium.js"></script> -->
<!-- <link href="https://cesium.com/downloads/cesiumjs/releases/1.68/Build/Cesium/Widgets/widgets.css" rel="stylesheet"> -->
</head>
<body>
<div id="cesiumContainer"></div>
<script>
Cesium.Ion.defaultAccessToken =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI5ZjRjNTZkNC01NDYxLTRhMjQtOGEwZC1kZjA3YzQ5YTJlZDkiLCJpZCI6MjYwODQsInNjb3BlcyI6WyJhc3IiLCJnYyJdLCJpYXQiOjE1ODcxOTMwODN9.prGsSKyAW_9Ow5zHYPhbm3LsQL-ApQw5-5PNJkDaHi8";
/**
* 加载影像服务
* 在构造Viewer实例时可以通过配置项中的`imageryProvider`属性指定要显示在椭球表面上的影像服务,
* 该配置想只有在`baseLayerPicker`设置为false时有效。
* Cesium 默认使用的是微软的Bing影像图。
* 在Viewer实例中的 `imageryLayers` 属性查看添加的影像服务图层。
*
* `imageryLayers` 属性是一个 `ImageryLayerCollection`集合提供一个传递imageryProvider创建影像服务图层的方法
* addImageryProvider(imageryProvider, index) → ImageryLayer
* 并返回一个 ImageryLayer 图层实例,可以设置图层透明度、地图亮度等属性
*
* 全局方法: createWorldImagery()->IonImageryProvider
* Creates an IonImageryProvider instance for ion's default global base imagery layer, currently Bing Maps.
* 创建一个IonImageryProvider实例ion上面的全球影像底图默认是Bing地图。
* 可以通过style参数指定底图类型可选值为 AERIAL, AERIAL_WITH_LABELS, ROAD 。都是必应地图的样式
*
* IonImageryProvider: 创建使用Cesium ion上面的影像瓦片服务的REST API的影像提供者
* new Cesium.IonImageryProvider({ assetId : 23489024 })
*
* Cesium支持的影像数据服务
* 1.ArcGisMapServerImageryProvider
* 2.MapboxStyleImageryProvider
* 3.BingMapsImageryProvider
* 4.OpenStreetMapImageryProvider
*
* 5.SingleTileImageryProvider 单张图片
* 6.WebMapServiceImageryProvider WMS服务
* 7.WebMapTileServiceImageryProvider WMTS服务
* 8.UrlTemplateImageryProvider xyz模版URL
* 9.TileMapServiceImageryProvider 加载瓦片TMS使用arcgis、gdal或maptiler切的瓦片集
*/
var viewer = new Cesium.Viewer("cesiumContainer", {
scene3DOnly: true,
selectionIndicator: false,
baseLayerPicker: false,
infoBox:false,
// imageryProvider: esriImagery,
});
/**
* 在 scene 场景中 imageryLayers 属性是一个 ImageryLayerCollection 影像集合实例
* viewer.imageryLayers 属性跟 viewer.scene.imageryLayers 获取的是同一个影像集合
* 常用方法:
* add(layer, index) :添加一个 ImageryLayer 到集合中并指定图层的 z-index,若 index 省略则图层将在最上层
* addImageryProvider(imageryProvider, index) → ImageryLayer :通过 imageryProvider 创建新的图层并添加到影像集合中,返回创建的新图层
* contains(layer) → Boolean
* get(index) → ImageryLayer
* indexOf(layer) → Number
*
* lower(layer):将 layer 的 index 向下移动一个位置
* lowerToBottom(layer)
*
* raise(layer):将 layer 的 index 向上移动一个位置
* raiseToTop(layer)
*
* remove(layer, destroy) → Boolean
* removeAll(destroy)
*/
var imageryLayers = viewer.scene.imageryLayers;
//清除影像图层集合中的图层
imageryLayers.removeAll();
const provider = new Cesium.WebMapServiceImageryProvider({
url:"http://127.0.0.1:8888/geoserver/tiger/wms",
layers: "tiger:tiger_roads",
crs: "4326",
rectangle: new Cesium.Rectangle(
Cesium.Math.toRadians(-74.02722),
Cesium.Math.toRadians(40.684221),
Cesium.Math.toRadians(-73.907005),
Cesium.Math.toRadians(40.8781785)
),
// parameters对象可设置getMap请求中的参数
parameters:{
format:"image/png8",
transparent:true
}
});
const imageryLayer = new Cesium.ImageryLayer(provider);
viewer.imageryLayers.add(imageryLayer);
//3.将imageryLayer加入到viewer中
viewer.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(
-74.02722,
40.684221,
15000.0
),
});
</script>
</body>
</html>