cesium-----练习集合

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <title>cesium app</title>
    <script src="./Cesium/Cesium.js"></script>
    <link rel="stylesheet " href="./Cesium/Widgets/widgets.css">
</head>
<body>
        <div id="cesiumContainer"></div>
        <script>

    //----加载中国谷歌影像地图
    var guge=new Cesium.UrlTemplateImageryProvider({
      url:'http://www.google.cn/maps/vt?lyrs=s@800&x={x}&y={y}&z={z}',
      tilingScheme:new Cesium.WebMercatorTilingScheme(),
      minimumLevel:1,
      maximumLevel:20
    });

    var viewer = new Cesium.Viewer('cesiumContainer', {
      baseLayerPicker: false,
      imageryProvider: guge,
      terrainProvider : Cesium.createWorldTerrain({
        // url : Cesium.IonResource.fromAssetId(3839),
        requestWaterMask:true,
        requestVertexNormals : true
      })
    })
    //-------设置视角
    viewer.camera.setView({
      destination : new Cesium.Cartesian3(1332761.6877998516,-4662399.913291841, 4137888.8927274314), // (纽约)坐标和高度(米)
      orientation: {
        heading : 0.6068261546578739, // east, default value is 0.0 (north)  // 北为0度,90指的是向正东方
        // pitch : Cesium.Math.toRadians(-90),    // default value (looking down) // 平视为0度,-90指的是俯视
        pitch : -0.6663290837739115,
        roll : 0.0                             // default value
      }
      // destination : Cesium.Cartesian3.fromDegrees(116.39, 39.9, 1000.0), // (北京)坐标和高度(米)
      // orientation: {
      //   heading : Cesium.Math.toRadians(90.0), // east, default value is 0.0 (north)  // 北为0度,90指的是向正东方
      //   pitch : Cesium.Math.toRadians(-90),    // default value (looking down) // 平视为0度,-90指的是俯视
      //   roll : 0.0                             // default value
      // }
    })
  //-------设置数据样式(楼层,根据高度)
    var city = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url: Cesium.IonResource.fromAssetId(3839)}));
    var transparentStyle = new Cesium.Cesium3DTileStyle({  //设置数据的样式
      color: {
        conditions: [
          ["${height} >= 300", "rgba(45, 0, 75, 0.5)"],
          ["${height} >= 200", "rgb(102, 71, 151)"],
          ["${height} >= 100", "rgb(170, 164, 204)"],
          ["${height} >= 50", "rgb(224, 226, 238)"],
          ["${height} >= 25", "rgb(252, 230, 200)"],
          ["${height} >= 10", "rgb(248, 176, 87)"],
          ["${height} >= 5", "rgb(198, 106, 11)"],
          ["true", "rgb(127, 59, 8)"]
        ]
      }
    })
    city.style = transparentStyle;


//--------geojson
var geojsonOptions={    //让地图贴地
  clamToGround:true
};
var neighborhoodsPromise = Cesium.GeoJsonDataSource.load('./assets/china_zz_20191009.json',geojsonOptions);
var neighborhoods;
neighborhoodsPromise.then(function (dataSource) {
      viewer.dataSources.add(dataSource);
  neighborhoods = dataSource.entities;
       var neighborhoodsEntities = dataSource.entities.values;
      for (var i = 0; i < neighborhoodsEntities.length; i++) {
        var entity = neighborhoodsEntities[i];
        if(Cesium.defined(entity.polygon)){
          entity.name = entity.properties.neighborhood;
          entity.polygon.material = Cesium.Color.fromRandom({
            red: 1,
            maximumGreen: 1,
            maximumBlue: 1,
            alpha : 1.0
          });
          entity.polygon.classificationType = Cesium.ClassificationType.TERRAIN;
          var polyPostions = entity.polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions;
          var polyCenter = Cesium.BoundingSphere.fromPoints(polyPostions).center;
          polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);
          entity.position = polyCenter;
          entity.label = {
            text : entity.name,
            showBackground : true,
            scale:0.6,
            horizontalOrigin:Cesium.HorizontalOrigin.CENTER,
            verticalOrigin:Cesium.verticalOrigin.BOTTOM,
            distanceDisplayCondition: new Cesium.DistanceDisplayCondition(10.0,8000.0),
            disableDepthTestDistance:100.0
          };
        }
      }
})


//------kml文件加载
var viewer = new Cesium.Viewer('cesiumContainer');
    // 加载kml数据,更改description信息,多了黄色的标签里面包含的

    var kmlOptions = {
        camera : viewer.scene.camera,
        canvas : viewer.scene.canvas,
        clampToGround : true
    };
    // Load geocache points of interest from a KML file
    // Data from : http://catalog.opendata.city/dataset/pediacities-nyc-neighborhoods/resource/91778048-3c58-449c-a3f9-365ed203e914
    var geocachePromise = Cesium.KmlDataSource.load('./assets/doc.kml', kmlOptions);

// Add geocache billboard entities to scene and style them
geocachePromise.then(function(dataSource) {
    // Add the new data as entities to the viewer
    viewer.dataSources.add(dataSource);

    // Get the array of entities
    var geocacheEntities = dataSource.entities.values;

    for (var i = 0; i < geocacheEntities.length; i++) {
        var entity = geocacheEntities[i];
        if (Cesium.defined(entity.billboard)) {
            // Adjust the vertical origin so pins sit on terrain
            entity.billboard.verticalOrigin = Cesium.VerticalOrigin.BOTTOM;
            // Disable the labels to reduce clutter
            entity.label = undefined;
            // Add distance display condition
            entity.billboard.distanceDisplayCondition = new Cesium.DistanceDisplayCondition(10.0, 20000.0);
            // Compute latitude and longitude in degrees
            var cartographicPosition = Cesium.Cartographic.fromCartesian(entity.position.getValue(Cesium.JulianDate.now()));
            var latitude = Cesium.Math.toDegrees(cartographicPosition.latitude);
            var longitude = Cesium.Math.toDegrees(cartographicPosition.longitude);

            // Modify description(将信息添加到description描述信息中,我们这里只添加经纬度)
            var description = '<table class="cesium-infoBox-defaultTable cesium-infoBox-defaultTable-lighter"><tbody>' +
            '<tr><th>' + "Longitude" + '</th><td>' + longitude.toFixed(5) + '</td></tr>' +
            '<tr><th>' + "Latitude" + '</th><td>' + latitude.toFixed(5) + '</td></tr>' +
            '</tbody></table>';
            entity.description = description;
        }
    }
});
        </script> 
    </body>
</html>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值