• cesium教程6用entity绘制点线面label和billboard广告牌


     

     

     注意:billboard显示的图片是立体的,会跟随角度而变化的。

    pinBuilder.fromText()用于创建自定义地图图钉

     完整示例代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>cesium示例</title>
      <!-- 引用cesium的js和css,天地图的扩展js -->
      <script src="https://cesium.com/downloads/cesiumjs/releases/1.92/Build/Cesium/Cesium.js"></script>
      <link rel="stylesheet" href="https://cesium.com/downloads/cesiumjs/releases/1.92/Build/Cesium/Widgets/widgets.css"/>
      <script src="http://api.tianditu.gov.cn/cdn/plugins/cesium/cesiumTdt.js" ></script>
      <style type="text/css">
        html, body, #tiandituContainer {
           100%; height: 100%; margin: 0; padding: 0; overflow: hidden;
        }
      </style>
     
    </head>
    <body onload="loadData()">
    <div id="tiandituContainer">
    </div>
    <script>
        
      //Cesium官网注册后的授权token,没有token不能使用cesium在线的地形服务,这里需要改成自己的token
      Cesium.Ion.defaultAccessToken = "";
      
      var viewer;
       function loadData()
       {
           //默认会调用微软virtualearth地图
            viewer = new Cesium.Viewer('tiandituContainer',{
              animation:false,       //是否显示动画控件
              homeButton:true,       //是否显示home键
              geocoder:true,         //是否显示地名查找控件,如果设置为true,则无法查询
              baseLayerPicker:true, //是否显示图层选择控件
              timeline:false,        //是否显示时间线控件
              fullscreenButton:true, //是否全屏显示
              infoBox:true,         //是否显示点击要素之后显示的信息
              sceneModePicker:true,  //是否显示投影方式控件  三维/二维
              navigationInstructionsInitiallyVisible:false, //导航指令
              navigationHelpButton:false,     //是否显示帮助信息控件
              selectionIndicator:false, //是否显示指示器组件
            });
            //隐藏cesium的logo
            viewer._cesiumWidget._creditContainer.style.display = "none"; 
            //默认的Cesium会加载一个bingMap底图,这个地图网络不太好,一般要先去掉这个默认的
            viewer.imageryLayers.remove(viewer.imageryLayers.get(0));
            
            //arcgis在线影像地图
            viewer.imageryLayers.addImageryProvider(new Cesium.ArcGisMapServerImageryProvider({
                name:"img_arcgis",
                url:"https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
            }));
             
             viewer.scene.globe.depthTestAgainstTerrain = false;//地形遮挡效果开关,打开后地形会遮挡看不到的区域
             viewer.scene.globe.enableLighting = true; //对大气和雾启用动态照明效果
             let pinBuilder = new Cesium.PinBuilder()
           
              //加载点1
              var point1 = viewer.entities.add({
                  id: 'point1', // id属性
                  position: Cesium.Cartesian3.fromDegrees(103, 30, 100), // 位置
                  point: {  //
                      color: new Cesium.Color.fromCssColorString("#3388ff"), // 点颜色
                      pixelSize: 10,  // 点大小
                      outlineColor: new Cesium.Color.fromCssColorString("#ffffff"), // 点的外圈线颜色
                      outlineWidth: 2,  // 点的外圈线宽度
                      disableDepthTestDistance: Number.POSITIVE_INFINITY  // 被遮挡是否可见(也就是将这个Entity在场景中置顶)
                  },
                  billboard: {
                      image: pinBuilder.fromText('first', Cesium.Color.ROYALBLUE, 48).toDataURL(),
                      verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
                  },
              });
              //加载点2,并绘制label文字和billboard广告牌
              var point2 = viewer.entities.add({
                  id: 'point2', // id属性
                  position: Cesium.Cartesian3.fromDegrees(104, 30, 100), // 位置
                  point: {  //
                      color: new Cesium.Color.fromCssColorString("#ff88ff"), // 点颜色
                      pixelSize: 10,  // 点大小
                      outlineColor: new Cesium.Color.fromCssColorString("#ffffff"), // 点的外圈线颜色
                      outlineWidth: 2,  // 点的外圈线宽度
                      disableDepthTestDistance: Number.POSITIVE_INFINITY  // 被遮挡是否可见(也就是将这个Entity在场景中置顶)
                  },
                  label: {
                           text: '紫色点的label标签',
                           font: '16px sans-serif', // 字体大小
                           style: Cesium.LabelStyle.FILL_AND_OUTLINE, // 字体样式
                           fillColor: new Cesium.Color.fromCssColorString("#ff88ff"), // 字体填充色
                           outlineWidth: 1,  // 字体外圈线宽度(同样也有颜色可设置)
                           outlineColor: new Cesium.Color.fromCssColorString("#ffffff"),
                           verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // 垂直位置
                           pixelOffset: new Cesium.Cartesian2(0, 15),  // 中心位置
                           disableDepthTestDistance: Number.POSITIVE_INFINITY
                       },
               billboard : {
                             image : 'https://leafletjs.com/docs/images/logo-ua.png',//billboard广告牌
                             show: true, // default
                             pixelOffset: new Cesium.Cartesian2(0, -10), // default: (0, 0)设置图片的偏移,是按屏幕坐标来偏移的
                             eyeOffset: new Cesium.Cartesian3(0.0, 0.0, 0.0), // default
                             horizontalOrigin: Cesium.HorizontalOrigin.CENTER, // default
                             verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // default: CENTER
                             scale: 2.0, // default: 1.0
                             color: new Cesium.Color.fromCssColorString("#ffffff"), // default: WHITE
                             rotation: 0, // default: 0.0
                             alignedAxis: Cesium.Cartesian3.ZERO, // default
                              200, // default: undefined
                             height: 50, // default: undefined
                             scaleByDistance: new Cesium.NearFarScalar(1.5e2, 1, 1000000, 0.0), // 按距离缩放,距离大于10000米时,图标不显示
                       }
              });
              //加载点3
              var point3 = viewer.entities.add({
                  id: 'point3', // id属性
                  position: Cesium.Cartesian3.fromDegrees(103.5, 30.5, 100), // 位置
                  point: {  //
                      color: new Cesium.Color.fromCssColorString("#00ffff"), // 点颜色
                      pixelSize: 10,  // 点大小
                      outlineColor: new Cesium.Color.fromCssColorString("#ffffff"), // 点的外圈线颜色
                      outlineWidth: 2,  // 点的外圈线宽度
                      disableDepthTestDistance: Number.POSITIVE_INFINITY  // 被遮挡是否可见(也就是将这个Entity在场景中置顶)
                  }
              });
              //加载线条
              var line  = viewer.entities.add({
                  name: "line", // 线的name属性
                  polyline: {  // 线
                      positions: [Cesium.Cartesian3.fromDegrees(103, 30, 100), Cesium.Cartesian3.fromDegrees(104, 30, 100)], // 由点构线
                       5.0, // 线的宽度
                      material: new Cesium.PolylineGlowMaterialProperty({
                          color: new Cesium.Color.fromCssColorString("#ff0000"),
                      }), // 线的材质、样式
                  }
              });
              //加载面图形
              var polygon  = viewer.entities.add({
                  polygon: {
                      height: 0.1,
                      hierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights([103, 30, 100, 103.5, 30.5, 100, 104, 30, 100])),  // 面的顶点坐标集合
                      material: new Cesium.Color.fromCssColorString("#FFD700").withAlpha(.5), // 颜色和透明度
                      perPositionHeight: true,  // 是否支持坐标高度  
                  }
              });
                
              // 将三维球定位到模型
              viewer.camera.flyTo({
                  destination: Cesium.Cartesian3.fromDegrees(103.5, 30, 200000),
                  orientation: {
                      heading :  Cesium.Math.toRadians(348.4202942851978),
                      pitch : Cesium.Math.toRadians(-89.74026687972041),
                      roll : Cesium.Math.toRadians(0)
                  },
                  complete:function callback() {
                      // 定位完成之后的回调函数
                  }
              });
       }    
                
    </script>
    </body>
    </html>
  • 相关阅读:
    Java类的访问权限
    安卓文件的保存路径问题
    Android 关于android.os.Build介绍
    java,安卓之信息的输出
    20141211
    20141208
    20141206
    20141203
    最近需要学习的东东
    Android:用代码修改一行文字中某几个字的颜色
  • 原文地址:https://www.cnblogs.com/tiandi/p/16623759.html
Copyright © 2020-2023  润新知