如果你看过我的距离量测文章,那么我相信,面积也是你需要测量的吧,那就看看吧。
一、实现思路
首先我们需要用到的鼠标移动事件、单击事件和双击事件,具体功能如下:
1,鼠标移动事件:判断是否开始进行测量操作(单击为开始标志),如果没有,则什么也不做,如何开始则需要把单击的坐标作为起点,鼠标当前位置作为终点画面,随着鼠标的移动需要不停的刷新面。
2,单击事件:将测面状态更新为真,当点击次数大于俩次,开始绘制面,这里有面积计算和更新面俩个函数比较重要,后续你会看到
3,双击事件:将之前注册的事件取消,并清空临时对象。是不是很简单呢?
二、源码实现
//测量面积
var measureArea = function (viewer) {
var tooltip = document.getElementById("ToolTip");
var isDraw = false;
var polygonPath = [];
var polygon = null;
var handler = viewer.screenSpaceEventHandler;
handler.setInputAction(function (movement) {
//新增部分
var position1;
var cartographic;
var ray = viewer.scene.camera.getPickRay(movement.endPosition);
if (ray)
position1 = viewer.scene.globe.pick(ray, viewer.scene);
if (position1)
cartographic = Cesium.Ellipsoid.WGS84.cartesianToCartographic(position1);
if (cartographic) {
//海拔
var height = viewer.scene.globe.getHeight(cartographic);
var point = Cesium.Cartesian3.fromDegrees(cartograph