当前位置: 首页 > 知识库问答 >
问题:

vue3 - cesium 请问如何在每次点移动的时候只有最新的点会显示标签,其余的旧的点不显示标签?

蔡楚
2023-06-20
function locus() {
  emitter.on('webDataValue', (data) => {
    watch(positionParam, (newVal, oldVal) => {
      // console.log("newVal", newVal, 'oldVal', oldVal, 'positionParam', positionParam);
      OldpositionParam.longitude = newVal.longitude;
      OldpositionParam.latitude = newVal.latitude;
    },
      {
        deep: false
      }
    );
    let positions = ref([
      { longitude: OldpositionParam.longitude, latitude: OldpositionParam.latitude, },//旧经纬度
      { longitude: data.longitude, latitude: data.latitude, }//新经纬度
    ])

    // 添加点
    positions.value.forEach((position, index) => {
      viewer.value.entities.add({
        position: Cesium.Cartesian3.fromDegrees(position.longitude, position.latitude),
        point: {
          pixelSize: 10,
          color: Cesium.Color.RED,
          outlineColor: Cesium.Color.WHITE,
          outlineWidth: 2,
        },
        label: {
          text: `点${index + 1}`,
          font: '14pt monospace',
          show: new Cesium.CallbackProperty(() => {
             return index === positions.value.length - 1;
          }, true),
          style: Cesium.LabelStyle.FILL_AND_OUTLINE,
          outlineWidth: 2,
          verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
          pixelOffset: new Cesium.Cartesian2(0, -9),
        },
      });
    });
    // 添加轨迹线
    viewer.value.entities.add({
      polyline: {
        positions: Cesium.Cartesian3.fromDegreesArray(positions.value.flatMap(pos => [pos.longitude, pos.latitude])),
        width: 2,
        material: Cesium.Color.RED,//折线的材质,可以是颜色或贴图的材质
      },
    });
  })
}

图片.png

共有1个答案

从开济
2023-06-20

CallbackProperty函数的第二个参数写false,另外函数里面你应该用一个公用的变量进行计算,而不是positions,因为你的positions是监听webDataValue不断地生成的,这对于多次添加的entity来说没有变化,都会满足这一要求

 类似资料:
  • 问题内容: 将matplotlib更新到当前版本后,在networkX中遇到节点标签问题:如果使用该命令,将得到一个图形,但未显示任何标签。但是,让我们用示例进行说明: 这将返回有效图,但没有节点标签。即使我像这样直接传递标签 仍然没有标签。我很确定它(尤其是上层)在更新之前已在昨天运行。那么matplotlib 1.3.x是否有变化(不记得我之前运行的确切版本)?当前版本是: 小小额外功能:如果

  • 我在试着在Marker里显示那个地方的名字。我正在应用某人的代码,并想改变价格到名称。 我试着改变一些台词,但结果不是我想要的。 > MarkerFromlatLong2.java

  • 我对fragment and recyclerView和翻新有问题 我的第一个片段显示了一个人员列表,当我开始片段活动时不显示内容,当我移动到第三个片段并返回到第一个片段时,内容出现。。。此外,当我使用编辑搜索文本和按搜索时,回收器视图必须刷新,但当我转到第三个片段并返回数据时,会出现<有什么问题吗?我正在使用改造2从服务器获取数据 我的片段: } 这是我的活动表和片段: //寻呼机。setOff

  • 我试图在matplotlib中绘制多条线。 我已经习惯了标签功能,但它没有显示它。 这是我的密码。 这是我的照片:

  • 问题内容: 我正在使用matplotlib制作散点图。散点图上的每个点都与一个命名对象相关联。当我将光标悬停在与该对象关联的散点图上的点上时,我希望能够看到该对象的名称。尤其是,能够快速查看异常点的名称将是很好的。我在此处搜索时能够找到的最接近的东西是注释命令,但这似乎在绘图上创建了固定标签。不幸的是,根据我拥有的点数,如果我标记每个点,则散点图将无法读取。有谁知道一种创建仅在光标悬停在该点附近时

  • 我正在使用Cytoscape.js创建一个图,并在父节点中合成了节点。我希望有主/父节点的标题在节点顶部,但在节点内部。在细胞膜上有可能吗? 子节点示例:https://stackblitz.com/edit/cytoscape-call-method-child-efmbaj?file=src%2fapp%2fstylesheetobject.ts