绘制点面线图形左键点击绘制,鼠标移动绘制,右键结束
**html**
<li><a href="#" id="measurement_dis_line">距离(线段)</a></li>
<li><a href="#" id="measurement_hei_line">高度(线段)</a></li>
<li><a href="#" id="measurement_area_circle">面积(圆形)</a></li>
<li><a href="#" id="measurement_area_rectangle">面积(矩形)</a></li>
<li><a href="#" id="measurement_area_polygon">面积(多边形)</a></li>
<li><a href="#" id="measurement_clear">清除</a></li>
**js**
var map_measurement = viewer.entities.add(new Cesium.Entity({ id: "map_measurement" }));
var handler;
$("#measurement_dis_line").click(function () {
if (Cesium.defined(handler)) {
handler.destroy();
handler = undefined;
}
handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
var DrawPoints = [];
var DrawPoint;
var distance = 0;
//双击鼠标左键清除默认事件
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
//鼠标左键
handler.setInputAction(function (event) {
var ray = viewer.camera.getPickRay(event.position);
var earthPosition = viewer.scene.globe.pick(ray, viewer.scene);
if (Cesium.defined(earthPosition)) {
if (DrawPoints.length == 0) {
DrawPoint = createPoint(earthPosition);
DrawPoints.push(earthPosition);
var dynamicPositions = new Cesium.CallbackProperty(function () {
return DrawPoints;
}, false);
drawShape_measurement("line", dynamicPositions, earthPosition);//绘制动态图
}
DrawPoints.push(earthPosition);
createPoint(DrawPoints[DrawPoints.length - 2]);
drawmeasurement(DrawPoints[DrawPoints.length - 2], (distance + "米"));
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
//鼠标移动
handler.setInputAction(function (event) {
if (Cesium.defined(DrawPoint)) {
var ray = viewer.camera.getPickRay(event.endPosition);
var newPosition = viewer.scene.globe.pick(ray, viewer.scene);
if (Cesium.defined(newPosition)) {
DrawPoints.pop();
DrawPoints.push(newPosition);
}
distance = getSpaceDistance(DrawPoints);
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
handler.setInputAction(function (event) {
handler.destroy();
handler = undefined;
createPoint(DrawPoints[DrawPoints.length - 1]);
drawmeasurement(DrawPoints[DrawPoints.length - 1], (distance + "米"));
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
});
//获取高度必须是点击模型。pickPosition拾取的是模型的高度。
$("#measurement_hei_line").click(function () {
if (Cesium.defined(handler)) {
handler.destroy();
handler = undefined;
}
handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
var DrawPoints = [];
var DrawPoint;
var distance = 0;
//双击鼠标左键清除默认事件
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
//鼠标左键
handler.setInputAction(function (event) {
var scene = viewer.scene;
var pickedObject = scene.pick(event.position); //判断是否拾取到模型
if (scene.pickPositionSupported && Cesium.defined(pickedObject)) {
var earthPosition = viewer.scene.pickPosition(event.position);
if (Cesium.defined(earthPosition)) {
if (DrawPoints.length == 0) {
DrawPoint = createPoint(earthPosition);
DrawPoints.push(earthPosition);
var dynamicPositions = new Cesium.CallbackProperty(function () {
return DrawPoints;
}, false);
drawShape_measurement("line", dynamicPositions, earthPosition);//绘制动态图
}
DrawPoints.push(earthPosition);
createPoint(DrawPoints[DrawPoints.length - 2]);
drawmeasurement(DrawPoints[DrawPoints.length - 2], (distance + "米"));
}
}
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
//鼠标移动
handler.setInputAction(function (event) {
if (Cesium.defined(DrawPoint)) {
var scene = viewer.scene;
var pickedObject = scene.pick(event.endPosition); //判断是否拾取到模型
if (scene.pickPositionSupported && Cesium.defined(pickedObject)) {
var newPosition = viewer.scene.pickPosition(event.endPosition);
if (Cesium.defined(newPosition)) {
DrawPoints.pop();
DrawPoints.push(newPosition);
}
distance = getheight(DrawPoints);
}
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
handler.setInputAction(function (event) {
handler.destroy();
handler = undefined;
createPoint(DrawPoints[DrawPoints.length - 1]);
drawmeasurement(DrawPoints[DrawPoints.length - 1], (distance + "米"));
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
});
$("#measurement_area_circle").click(function () {
if (Cesium.defined(handler)) {
handler.destroy();
handler = undefined;
}
handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
var DrawPoints = [];
var DrawPoint;
var distance = 0;
var nowentity;
//双击鼠标左键清除默认事件
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenS