cesium面积计算_cesium-长度测量和面积测量

(更新)多谢网友的提醒,面积测量的小问题已经修改,经测试可正常使用

网上找的大神的实现方法有点问题,实现有一些bug,作为cesium新手一个,弃之不忍,只好硬着头皮修改了,不过还好问题不大,再次mark一下,下次就可以直接用了

4a97d3ed4a06?tdsourcetag=s_pctim_aiomsg

image.png

import Cesium from "cesium/Cesium";

import widgets from "cesium/Widgets/widgets.css";

export default {

//测量空间直线距离

/******************************************* */

measureLineSpace(viewer, handler) {

// 取消双击事件-追踪该位置

viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);

handler = new Cesium.ScreenSpaceEventHandler(viewer.scene._imageryLayerCollection);

var positions = [];

var poly = null;

// var tooltip = document.getElementById("toolTip");

var distance = 0;

var cartesian = null;

var floatingPoint;

// tooltip.style.display = "block";

handler.setInputAction(function (movement) {

// tooltip.style.left = movement.endPosition.x + 3 + "px";

// tooltip.style.top = movement.endPosition.y - 25 + "px";

// tooltip.innerHTML = '

单击开始,右击结束

';

// cartesian = viewer.scene.pickPosition(movement.endPosition);

let ray = viewer.camera.getPickRay(movement.endPosition);

cartesian = viewer.scene.globe.pick(ray, viewer.scene);

//cartesian = viewer.scene.camera.pickEllipsoid(movement.endPosition, viewer.scene.globe.ellipsoid);

if (positions.length >= 2) {

if (!Cesium.defined(poly)) {

poly = new PolyLinePrimitive(positions);

} else {

positions.pop();

// cartesian.y += (1 + Math.random());

positions.push(cartesian);

}

distance = getSpaceDistance(positions);

// console.log("distance: " + distance);

// tooltip.innerHTML='

'+distance+'米

';

}

}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

handler.setInputAction(function (movement) {

// tooltip.style.display = "none";

// cartesian = viewer.scene.camera.pickEllipsoid(movement.position, viewer.scene.globe.ellipsoid);

// cartesian = viewer.scene.pickPosition(movement.position);

let ray = viewer.camera.getPickRay(movement.position);

cartesian = viewer.scene.globe.pick(ray, viewer.scene)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值