Cesium 动态缓冲区分析

前言

缓冲区分析就是空间实体的一种影响范围或服务范围,缓冲区分析的基本思想是给定一个空间实体或集合,确定它们的领域,领域的大小由领域半径来确定。 

原理

Cesium已经对turf.js进行了封装,可以直接用Cesium.turf进行调用。将拿到的点集以绘制polygon的方式进行渲染。再调用Cesium.CallbackProperty动态获取缓冲区的半径然后重新渲染polygon。

实现

获取点的buffer
var radius=5;
var point = Cesium.turf.point([115.548630, 39.616599]);
var buffered = Cesium.turf.buffer(point, radius, 'kilometers');
创建entity
var areaentity = new Cesium.Entity({
      id: "buffer",
      polygon: {
        hierarchy: new Cesium.CallbackProperty(function(time, result) {
          if (radius < 50) {
            radius +=
              0.01 * Cesium.JulianDate.secondsDifference(time, startTime);
          }
          return Cesium.Cartesian3.fromDegreesArray(
            reduceDimension(
              Cesium.turf.buffer(point, radius, "kilometers").geometry
                .coordinates[0]
            ),
            Cesium.Ellipsoid.WGS84,
            result
          );
        }, false),
        material: Cesium.Color.SKYBLUE.withAlpha(0.5)
      }
    });
    viewer.entities.add(areaentity);
    function reduceDimension(arr) {
      var reduced = [];
      for (var i = 0; i < arr.length; i++) {
        reduced = reduced.concat(arr[i]);
      }
      return reduced;
    }

你可能感兴趣的:(webgis,buffer,javascript)