guoshilong
2023-09-08 cee338f18d22bbbb989d79c0add082fdb4e2b8ef
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import { useMyStore } from '../store'
import * as Cesium from 'cesium'
// 绘制项目所有中心点
export function pointCenter (viewer: any, longitudeList: any) {
  // 删除地图中所有标识点
  viewer.entities.removeAll()
  if (longitudeList.length === 0) return
  longitudeList.forEach((item: { id:string, longitude: number; latitude: number, label: string }) => {
    addPoint(viewer, item.id, item.longitude, item.latitude, item.label)
  })
}
// 绘制点
function addPoint (viewer: any, id:string, longitude: number, latitude: number, label: string) {
  const entity = viewer.entities.add({
    position: Cesium.Cartesian3.fromDegrees(longitude, latitude),
    id,
    // label: {
    //   text: label,
    //   heightReference: 80,
    //   pixelOffset: new Cesium.Cartesian2(0, -25),
    //   font: '40px'
    // },
    point: {
      pixelSize: 24,
      color: Cesium.Color.GREEN,
      outlineColor: Cesium.Color.WHITE,
      outlineWidth: 2,
    }
  })
  //   const label = virw
}
 
// 点击当前点的事件
export function clickPoint (viewer: any, longitudeList: any) {
  const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
  handler.setInputAction(function (click: any) {
    const pickedObject = viewer.scene.pick(click.position)
    if (Cesium.defined(pickedObject)) {
      const list = longitudeList.filter((v: { id:string, longitude: number; latitude: number; }) => v.id === pickedObject.id.id)
      if (pickedObject.id.label) {
        pickedObject.id.label = null
      } else {
        pickedObject.id.label = {
          text: list[0].label,
          pixelOffset: new Cesium.Cartesian2(0, -25),
          font: '40px'
        }
      }
 
    //   const point = pickedObject.id.point
    //
    }
  }
  , Cesium.ScreenSpaceEventType.LEFT_CLICK)
  handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
}