140 lines
3.8 KiB
JavaScript
140 lines
3.8 KiB
JavaScript
var arrow = {
|
|
isActivate: false,
|
|
drawArr: [],
|
|
handler: null,
|
|
viewer: null,
|
|
init: function(viewer) {
|
|
if (!this.isActivate) {
|
|
this.isActivate = true;
|
|
this.viewer = viewer;
|
|
this.bindEdit();
|
|
}
|
|
},
|
|
disable: function() {
|
|
if (this.isActivate) {
|
|
this.isActivate = false;
|
|
for (var i = 0; i < this.drawArr.length; i++) {
|
|
this.drawArr[i].disable();
|
|
}
|
|
this.drawArr = [];
|
|
if (this.handler) {
|
|
this.handler.destroy();
|
|
this.handler = null;
|
|
}
|
|
this.viewer = null;
|
|
}
|
|
},
|
|
draw: function(type) {
|
|
switch (type) {
|
|
case "straightArrow":
|
|
var straightArrow = new StraightArrow(viewer);
|
|
straightArrow.startDraw();
|
|
this.drawArr.push(straightArrow);
|
|
break;
|
|
case "attackArrow":
|
|
var attackArrow = new AttackArrow(viewer);
|
|
attackArrow.startDraw();
|
|
this.drawArr.push(attackArrow);
|
|
break;
|
|
case "pincerArrow":
|
|
var pincerArrow = new PincerArrow(viewer);
|
|
pincerArrow.startDraw();
|
|
this.drawArr.push(pincerArrow);
|
|
default:
|
|
break;
|
|
}
|
|
},
|
|
saveData: function() { //保存用户数据
|
|
var jsonData = {
|
|
straightArrowData: [],
|
|
attackArrowData: [],
|
|
pincerArrowData: []
|
|
}
|
|
for (var step = 0; step < this.drawArr.length; step++) {
|
|
var item = this.drawArr[step];
|
|
var positions = item.getLnglats();
|
|
if (item.type == "StraightArrow") {
|
|
jsonData.straightArrowData.push(positions);
|
|
} else if (item.type == "AttackArrow") {
|
|
jsonData.attackArrowData.push(positions);
|
|
} else {
|
|
jsonData.pincerArrowData.push(positions);
|
|
}
|
|
}
|
|
console.log("保存的数据:" + JSON.stringify(jsonData));
|
|
},
|
|
showData: function(jsonData) { //展示用户保存的数据
|
|
if(!jsonData) return ;
|
|
var straightArrowArr = jsonData.straightArrowData;
|
|
var attackArrowArr = jsonData.attackArrowData;
|
|
var pincerArrowArr = jsonData.pincerArrowData;
|
|
//展示直线箭头
|
|
for(var i=0;i<straightArrowArr.length;i++){
|
|
var item = straightArrowArr[i];
|
|
var straightArrow = new StraightArrow(viewer);
|
|
straightArrow.createByData(item);
|
|
this.drawArr.push(straightArrow);
|
|
}
|
|
//展示攻击箭头
|
|
for(var j=0;j<attackArrowArr.length;j++){
|
|
var item = attackArrowArr[j];
|
|
var attackArrow = new AttackArrow(viewer);
|
|
attackArrow.createByData(item);
|
|
this.drawArr.push(attackArrow);
|
|
}
|
|
//展示钳击箭头
|
|
for(var z=0;z<pincerArrowArr.length;z++){
|
|
var item = pincerArrowArr[z];
|
|
var pincerArrow = new PincerArrow(viewer);
|
|
pincerArrow.createByData(item);
|
|
this.drawArr.push(pincerArrow);
|
|
}
|
|
|
|
},
|
|
nowArrowObj: null,
|
|
bindEdit: function() {
|
|
var $this = this;
|
|
this.handler = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);
|
|
this.handler.setInputAction(function(evt) { //单机开始绘制
|
|
var pick = $this.viewer.scene.pick(evt.position);
|
|
if (Cesium.defined(pick) && pick.id) {
|
|
if ($this.nowArrowObj) {
|
|
if ($this.nowArrowObj.state != -1) {
|
|
console.log("上一步操作未结束,请继续完成上一步!");
|
|
return;
|
|
}
|
|
}
|
|
for (var i = 0; i < $this.drawArr.length; i++) {
|
|
if (pick.id.objId == $this.drawArr[i].objId) {
|
|
$this.nowArrowObj = $this.drawArr[i];
|
|
$this.drawArr[i].startModify();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
|
},
|
|
clearOne: function() {
|
|
var $this = this;
|
|
this.handler.setInputAction(function(evt) { //单机开始绘制
|
|
var pick = viewer.scene.pick(evt.position);
|
|
if (Cesium.defined(pick) && pick.id) {
|
|
for (var i = 0; i < $this.drawArr.length; i++) {
|
|
if (pick.id.objId == $this.drawArr[i].objId) {
|
|
$this.drawArr[i].clear();
|
|
$this.drawArr.splice(i, 1);
|
|
break;
|
|
}
|
|
}
|
|
$this.handler.destroy();
|
|
$this.bindEdit();
|
|
}
|
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
|
},
|
|
clearAll:function(){
|
|
for (var i = 0; i < this.drawArr.length; i++) {
|
|
this.drawArr[i].clear();
|
|
}
|
|
}
|
|
}
|