Cesium影像服务—BaseLayerPicker使用

由于图层操作是最基本的操作,cesium自己封装了现成的组件:BaseLayerPicker。本篇博客我们就学习下内置BaseLayerPicker的使用以及如何自定义实现BaseLayerPicker(基础底图)。

1、修改内置BaseLayerPicker

在初始化Viewer时,将baseLayerPicker设置为true即可显示BaseLayerPicker控件。我们可以通过将viewer.baseLayerPicker.viewModel.selectedImagery 设置为viewer.baseLayerPicker.viewModel.imageryProviderViewModels[6]来设置BaseLayerPicker的默认数据源(注:我们这里设置的[5])。

        //一:使用cesium内置数据源选择工具:BaseLayerPicker
        var viewer = new Cesium.Viewer('cesiumContainer', {
            TerrainProvider:null,
            selectionIndicator:false,
            animation:false,  //是否显示动画控件
            baseLayerPicker:true, //是否显示图层选择控件
            geocoder:false, //是否显示地名查找控件
            timeline:false, //是否显示时间线控件
            sceneModePicker:true, //是否显示投影方式控件
            navigationHelpButton:false, //是否显示帮助信息控件
            infoBox:false,  //是否显示点击要素之后显示的信息
            fullscreenButton:true
        });
        //取消双击事件
       viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
        //设置homebutton的位置
        Cesium.Camera.DEFAULT_VIEW_RECTANGLE=
                Cesium.Rectangle.fromDegrees(110.15,34.54, 110.25, 34.56);//Rectangle(west, south, east, north)
        //设置初始位置
        viewer.camera.setView({
            destination:Cesium.Cartesian3.fromDegrees(110.20, 34.55, 3000000)
        });
        //设置默认地图源
        viewer.baseLayerPicker.viewModel.selectedImagery= viewer.baseLayerPicker.viewModel.imageryProviderViewModels[5];

2 、自定义BaseLayerPicker

除了使用baseLayerPicker中默认的地图数据源,我们可以使用cesium提供的ProviderViewModel接口自己扩展数据源。在初始化viewer时设置imageryProviderViewModels为自定义的providerViewModels。例如我们添加一个esri自定义数据源过程:

       var viewer = new Cesium.Viewer('cesiumContainer');
        //定义ImageryProvider:
         var esriMap = new Cesium.ArcGisMapServerImageryProvider({
            url:'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer',
            enablePickFeatures:false
        });
        //设置ProviderViewModel:
        var esriMapModel = new Cesium.ProviderViewModel({
            name:'esri Maps',
            iconUrl:Cesium.buildModuleUrl('./Widgets/Images/ImageryProviders/esriWorldImagery.png'),
            tooltip:'ArcGIS 地图服务',
            creationFunction:function () {
                return esriMap;
            }
        });


        //只有一个
        var providerViewModels = [];
        providerViewModels.push(esriMapModel);
        viewer.baseLayerPicker.viewModel.imageryProviderViewModels = providerViewModels;

      //新增一个
      //var providerViewModels = viewer.baseLayerPicker.viewModel.imageryProviderViewModels;
      //providerViewModels.push(esriMapModel);
      //viewer.baseLayerPicker.viewModel.imageryProviderViewModels = providerViewModels;
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,018评论 3 119
  • 秋天干渴的土地 在烈日下 银杏的叶子边上焦黄 没有雨水 打湿不结果的树 一位年青人总想去采野果 空气进了蒸笼 热成...
    菁鹤堂_刘昭川鹤阅读 170评论 0 5
  • 这里有只兔子,它叫红鸽。我也不知道为什么一只兔子要叫另一种动物的名字,而且它也不是红色的。小镇上的其它动物...
    鸿朝阅读 535评论 1 1
  • 习惯意味着意志力,意味着自我掌控力,意味着效率,意味着一切是自然:优秀是一种习惯。 事实上,你不在培养良好习惯,就...
    泰来妈妈阅读 281评论 2 0