• Cesium加载各类数据总结


    接触到的加载数据类型:源地图、shp、Geojson、png、wms、地形底图

    一.Cesium加载各类底图

    #此类加载的本质在于 new Cesium.ImageryProvider()

    Api defination:“Provides imagery to be displayed on the surface of an ellipsoid. This type describes an interface and is not intended to be instantiated directly.”

    imagerProvider不能直接实例化,必须使用具体的接口

    var viewer = new Cesium.Viewer("cesiumContainer",
    {imageryProvider:new Cesium.加载数据方式{
      url:加载数据类型}),
     其他控件设置
    });
    二.官方的ImageryProvider详细说明:
    Cesium内置以下ImageryProvider:

     
    三、完成的Base加载封装
    用的最多的主要是UrlTemplateImageryLayer,url模版的影像加载,加载如google这类商业底图;SingleTileImageryProvider,单一瓦片影像加载,如单张图片;
    TileCoordinatesImageryProvider,瓦片坐标影像加载,加载经纬度网格图;WebMapServiceImageryProvider,WMS格式服务影像加载,也就是加载本地服务器发布的影像图。
    加载3dTiles等3D格式数据,不在本文梳理,另外总结。
    //1.加载url模版的地图影像UrltemplateImageryProvider,如google/高德/百度等
      addGoogleImagery(){
        //UrltemplateImageryProvider自定义加载影像方式
        return new Cesium.UrlTemplateImageryProvider({
          url:"http://mt1.google.cn/vt/lyrs=s&hl=zh-CN&x={x}&y={y}&z={z}&s=Gali"
        }) 
      }
    //3.加载图片 图片地址及西南东北范围(单位度),图片也可以是其他形状(修改rectangle)
      addPicImagery(picurl,west,south,east,north){
        let opts = {
          url:picurl,
          rectangle:Cesium.Rectangle.fromDegrees(west,south,east,north)
        };
        return new Cesium.SingleTileImageryProvider(opts)
      }
    //4.加载json格式
      //#直接加载
      addJsonImagery(jsonurl){
        let viewer = this._viewer;
        //一种方式
        viewer.dataSources.add(Cesium.GeoJsonDataSource.load(jsonurl,{
          stroke:Cesium.Color.RED,
          strokeWidth:5,
          fill:Cesium.Color.RED.withAlpha(0.1),
          //fill:new Cesium.Color(0, 0, 0, 0)//设置纯透明后,必须点击到polygon边界才显示提示框
        })); 
        //另一种方式
        // let promise = Cesium.GeoJsonDataSource.load(jsonurl);
        // promise.then(function(jsondata){
        //   viewer.dataSources.add(jsondata);
        //   let entities =dataSources.entities.values;
        //   for (let entity of entities) {
        //     entity.polygon.fill=false;//设置无填充后,必须点击到polygon边界才显示提示框
        //     entity.polygon.outline = true;
        //     entity.polygon.outlineColor = Cesium.Color.RED;
        //     entity.polygon.width=5//无效,polygon.width不能超过1        
        //   }
        // })
      }
    //5.加载kml格式
      AddKmlData(url){
        let viewer = this._viewer;
        var promiseKml = new Cesium.KmlDataSource.load(url, {
          clampToGround:true
        });
        promiseKml.then(kmlData => {
          viewer.dataSources.add(kmlData);
          let entities = kmlData.entities.values;
          for (let entity of entities) {
            entity.polyline.show = true;
            entity.polyline.material = new Cesium.PolylineGlowMaterialProperty({
              glowPower:0.5,
              color:Cesium.Color.BLUE
            })        
          }
        });
      }
    //6.发布的wms地图服务
      //使用Geoserver发布,网上有很多教程如何使用,使用接口WebMapServiceImageryProvider
      addWmsImagery(wmsurl,wmslayer){
        let viewer = this._viewer;
        let wmsImage = new Cesium.WebMapServiceImageryProvider({
          url:wmsurl("http://127.0.0.1:8083/geoserver/cesium/wms",
          layers : wmslayer(cesium:图层),
          fill : false,
          parameters : {
            service : "WMS",
            format : "image/png",
            transparent : true
          }
        });
        viewer.imageryLayers.addImageryProvider(wmsImage);
        //viewer.imageryLayers.add(wmsImage);
      }
    //7.加载tiff地形,首先地形文件一定要有坐标,坐标系是非常重要的,接口使用WebMapServiceImageryProvider,使用geoserver发布
      addTiffImagery(tiffurl,tifflayer){
        let viewer = this._viewer;
        let tiffProvider = new Cesium.WebMapServiceImageryProvider({
          url:tiffurl,
          layers: tifflayer,
          parameters:{
            service:"WMS",
            format:"image/png",
            transparent:true   
          }
        });
        viewer.imageryLayers.addImageryProvider(tiffProvider);
      }
    //8.加载BingMaps,url好像已经失效
      addBingMaps(){
        return new Cesium.BingMapsImageryProvider({
          url : 'https://dev.virtualearth.net',
          mapStyle: Cesium.BingMapsStyle.ROAD
        })
      }
    //9.加载ArcGIS World Street Maps
      addArcGISMap(){
        return new Cesium.ArcGisMapServerImageryProvider({
          url : 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer'
        });
      }
    //10.加载OpenStreetMaps 
      addOpenStreetMap(){
        return new Cesium.Cesium.createOpenStreetMapImageryProvider({
          url : 'https://stamen-tiles.a.ssl.fastly.net/watercolor/',
          fileExtension: 'jpg',
          credit: 'Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under CC BY SA.'
        });
      }
    //11.加载Tile Coordinates 坐标网格
      addTileCoord(){
        return new Cesium.TileCoordinatesImageryProvider();
      }
    转载:别人翻译的影像图层教程 https://www.jianshu.com/p/98d4c0b2c618
     
  • 相关阅读:
    hdu 1576 A/B(exgcd、乘法逆元+整数快速幂)
    CSS3带小图标垂直下拉菜单
    CSS3动画表单
    灰色3D按钮组合
    半透明菜单导航
    CSS3透明背景表单
    CSS3手风琴菜单 可同时折叠多个菜单
    jQuery图片下滑切换焦点图
    jQuery消息提示框插件Tipso
    jQuery自动轮播图片焦点图
  • 原文地址:https://www.cnblogs.com/xiaoguniang0204/p/11675253.html
Copyright © 2020-2023  润新知