[cesium] 插件 | 基于cesium的动态缓冲区图形绘制

曾经终败给现在 2023-01-11 09:18 333阅读 0赞

前言

之前写了一个动态缓冲区的效果,网友私信想要demo,这里把代码贴到github上,有需要的自取;

插件地址:传送门

在线地址:访问

效果

" class="reference-link">20210126180304472.gif

示例代码

  1. // 初始化
  2. let viewer = new Cesium.Viewer("viewerContainer")
  3. // 参数 缓冲范围
  4. let radius = 1, bufferEntity = [];
  5. // 创建点缓冲区
  6. let createPointBuffer = () => {
  7. // 绘制点 右键结束
  8. Cesium.drawPointGraphics({ viewer: viewer }).then((point) => {
  9. // 创建缓冲区范围
  10. point = point[0]
  11. let turfPositions = turf.point([point.lng, point.lat])
  12. bufferEntity.push(Cesium.createGraphicsBuffer({
  13. viewer: viewer,
  14. turfPositions: turfPositions,
  15. radius: Number(radius)
  16. }))
  17. })
  18. }
  19. // 创建线 缓冲区
  20. let createPolylineBuffer = () => {
  21. // 绘制线 右键结束
  22. Cesium.drawLineGraphics({ viewer: viewer }).then((lines) => {
  23. // 创建缓冲区范围
  24. let _lines = []
  25. lines.forEach((line) => { let point = [line.lng, line.lat]; _lines.push(point)}
  26. let turfPositions = turf.lineString(_lines)
  27. bufferEntity.push(Cesium.createGraphicsBuffer({
  28. viewer: viewer,
  29. turfPositions: turfPositions,
  30. radius: Number(radius)
  31. }))
  32. })
  33. }
  34. // 创建面缓冲区
  35. let createPolygonBuffer = () => {
  36. // 绘制面 右键结束
  37. Cesium.drawPolygonGraphics({ viewer: viewer }).then((polygons) => {
  38. // 创建缓冲区范围
  39. let _polygons = []
  40. polygons.forEach((polygon) => { let point = [polygon.lng, polygon.lat];_polygons.push(point) })
  41. let turfPositions = turf.polygon([_polygons])
  42. bufferEntity.push(Cesium.createGraphicsBuffer({
  43. viewer: viewer,
  44. turfPositions: turfPositions,
  45. radius: Number(radius)
  46. }))
  47. })
  48. }
  49. // 动画控制
  50. let animation = () => bufferEntity && bufferEntity.forEach(entity => entity.animation = !entity.animation)

发表评论

表情:
评论列表 (有 0 条评论,333人围观)

还没有评论,来说两句吧...

相关阅读