define([
|
'dojo/_base/declare',
|
'dojo/_base/lang',
|
'dojo/_base/array',
|
'dojo/_base/html',
|
"dojo/topic",
|
'jimu/BaseWidget',
|
'dojo/on',
|
'jimu/dijit/Popup',
|
'./GeologicalDisasterPanel'
|
],
|
function (declare,
|
lang,
|
array,
|
html,
|
topic,
|
BaseWidget,
|
on,
|
Popup,
|
GeologicalDisasterPanel
|
) {
|
return declare([BaseWidget], {
|
baseClass: 'jimu-widget-PathShow',
|
name: 'PathShow',
|
shidiLayer: null,
|
datas: null,
|
polyline: null,
|
layer: null,
|
startup: function () {
|
this.inherited(arguments);
|
|
var self = this;
|
|
$.ajax({
|
url: 'widgets/PathShow/jddatas.json',
|
type: "POST",
|
dataType: "json",
|
success: function success(data) {
|
self.datas = data.data;
|
self.createList(data.data);
|
}
|
});
|
|
//添加地图点击事件
|
this.addHandler();
|
|
},
|
|
onMinimize: function () {
|
// this.resize();
|
},
|
|
onMaximize: function () {
|
// this.resize();
|
},
|
onOpen: function () {
|
//面板打开的时候触发,添加标签到地图上
|
var self = this;
|
window.openAudioName = this.name;
|
self.map.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(115.737419, 28.747867, 32000)
|
});
|
},
|
|
onClose: function () {
|
//面板打开的时候触发,删除地图上标签
|
var self = this;
|
self.map.entities.removeAll();
|
self._controlSendAll(false);
|
$('#chosePage').attr('style', 'display:block;');
|
$('#intro').attr('style', 'display:none');
|
$('#PathShow_qj').attr('src', '');
|
$("#PathShow_bgMusic").attr('src', '');
|
for (var i = 0; i < this.datas.length; i++) {
|
clearTimeout(this.datas[i].settimeoutId);
|
}
|
},
|
|
// resize: function() {
|
|
// },
|
|
destroy: function () {
|
this.inherited(arguments);
|
},
|
|
//关键字过滤
|
query: function () {
|
var text = this.keyNode.value;
|
if (text != "" && text.length > 0) {
|
var list = array.filter(this.datas, function (g) {
|
if (g.name.indexOf(text) > -1) {
|
return true;
|
} else {
|
return false;
|
}
|
}, this);
|
|
$('.jimu-widget-PathShow ul li').remove();
|
this.createList(list);
|
} else {
|
$('.jimu-widget-PathShow ul li').remove();
|
this.createList(this.datas);
|
}
|
},
|
createList: function (dataList) {
|
var self = this;
|
dataList.forEach(function (element, index) {
|
$(".jimu-widget-PathShow .PathShow-listul").append("<li id='" + element.id + "'><p><span>" + (index + 1) + "、" +
|
element.name + "</span></p></li>");
|
}, this);
|
|
//添加li点击事件,地图定位
|
$('.jimu-widget-PathShow .PathShow-listul li span').click(function () {
|
$(".jimu-widget-PathShow .PathShow-listul li span").removeClass("bck_color");
|
$(this).addClass("bck_color");
|
});
|
|
//添加li点击事件,地图定位
|
$('.jimu-widget-PathShow .PathShow-listul li').click(function () {
|
let selectItem = this.innerText.trim();
|
selectItem = selectItem.split("、")[1];
|
|
var ids = $(this).attr("id");
|
var ar = dataList.find(function (elem) {
|
return elem.name == selectItem && elem.id == ids;
|
});
|
|
|
//清除地图点
|
self.map.entities.removeAll();
|
|
self.addPoint(ar);
|
|
$.ajax({
|
url: 'widgets/PathShow/datas.json',
|
type: "POST",
|
dataType: "json",
|
success: function success(res) {
|
for (var i = 0; i < res.features.length; i++) {
|
if (res.features[i].attributes.Name == selectItem) {
|
self.addLines(res.features[i]);
|
self.map.camera.flyTo({
|
destination: Cesium.Cartesian3.fromDegrees(res.features[i].attributes.x, res.features[i].attributes.y, res.features[i].attributes.height)
|
});
|
}
|
}
|
|
}
|
});
|
|
|
});
|
|
},
|
loadChirden: function (item) {
|
//切换显示
|
$('#chosePage').attr('style', 'display:none');
|
$('#intro').attr('style', 'display:block');
|
|
$(".hudong-head").stop().hide();
|
|
//添加图片
|
$('.jimu-widget-PathShow .PathShow-enlarge-img .PathShow-enlarge-main .PathShow-enlarge-content ul').empty();
|
$('.jimu-widget-PathShow .PathShow-child-text div .PathShow-child-img-main .PathShow-child-img-content ul').empty();
|
// 单张图片的处理方式
|
$(".jimu-widget-PathShow .PathShow-enlarge-img .PathShow-enlarge-main .PathShow-enlarge-left").stop().hide();
|
$(".jimu-widget-PathShow .PathShow-enlarge-img .PathShow-enlarge-main .PathShow-enlarge-right").stop().hide();
|
$(".jimu-widget-PathShow .PathShow-child-text div .PathShow-child-img-main .PathShow-child-img-left").stop().hide();
|
$(".jimu-widget-PathShow .PathShow-child-text div .PathShow-child-img-main .PathShow-child-img-right").stop().hide();
|
$('.jimu-widget-PathShow .PathShow-enlarge-img .PathShow-enlarge-main .PathShow-enlarge-content ul').append("<li> <img src='" + item.thumb + "' alt=''> </li>");
|
$('.jimu-widget-PathShow .PathShow-child-text div .PathShow-child-img-main .PathShow-child-img-content ul').append("<li> <img src='" + item.thumb + "' alt=''> </li>");
|
|
},
|
addHandler: function () {
|
var handler = new Cesium.ScreenSpaceEventHandler(this.map.scene.canvas);
|
handler.setInputAction(lang.hitch(this, this.clickHandler), Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
},
|
clickHandler: function (movement) {
|
var self = this;
|
var pickedObjects = self.map.scene.drillPick(movement.position);
|
if (Cesium.defined(pickedObjects)) {
|
for (var i = 0; i < pickedObjects.length; ++i) {
|
var obj = pickedObjects[i].id;
|
for (var j = 0; j < self.datas.length; j++) {
|
if (obj.id.split("path")[1] == self.datas[j].id) {
|
self.openWindow(obj.id.split("path")[0], self.datas[j]);
|
return;
|
}
|
}
|
|
|
}
|
|
}
|
},
|
addLines: function (result) {
|
|
var res = result.geometry.paths[0];
|
|
var id = result.OBJECTID;
|
|
var self = this;
|
|
if (self.polyline != null) {
|
self.layer.remove(self.polyline);
|
}
|
|
var positions = '';
|
for (var i = 0; i < res.length; i++) {
|
if (i != res.length - 1) {
|
positions += res[i][0] + ',' + res[i][1] + ';';
|
} else {
|
positions += res[i][0] + ',' + res[i][1];
|
}
|
|
}
|
|
self.layer = new DC.VectorLayer('layer')
|
|
window.dcViewer.addLayer(self.layer)
|
|
self.polyline = new DC.Polyline(positions);
|
|
self.polyline.setStyle({
|
width: 10,
|
material: new DC.PolylineImageTrailMaterialProperty({
|
speed: 20,
|
image: './images/arrow.png',
|
repeat: {x: 40, y: 1}
|
}),
|
clampToGround: true
|
});
|
self.layer.addOverlay(self.polyline);
|
|
let position = new DC.Position(115.70683949300007, 28.80868520100006);
|
let circle = new DC.Circle(position, 2000)
|
circle.setStyle({
|
material: new DC.ImageMaterialProperty({
|
image: './images/circle_bg.png'
|
})
|
})
|
circle.rotateAmount = 0.01
|
let model = new DC.Model(position, './images/zhui.glb')
|
model.setStyle({
|
scale: 100
|
})
|
model.rotateAmount = 4
|
self.layer.addOverlay(model).addOverlay(circle)
|
|
},
|
addPoint: function (res) {
|
|
var result = res.lx;
|
|
var self = this;
|
|
for (var i = 0; i < result.length; i++) {
|
|
|
var imgs = "";
|
|
imgs = "./widgets/PathShow/img/viewpoint.png";
|
|
self.map.entities.add({
|
id: result[i].id + "path" + res.id,
|
position: Cesium.Cartesian3.fromDegrees(Number(result[i].x), Number(result[i].y), 200),
|
label: {
|
text: result[i].title,
|
font: "700 16px '黑体'",
|
fillColor: Cesium.Color.PALETURQUOISE,
|
outlineColor: Cesium.Color.BLACK,
|
outlineWidth: 2,
|
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
|
horizontalOrigin: Cesium.HorizontalOrigin.TOP,
|
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
|
// heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
|
pixelOffset: new Cesium.Cartesian2(0, -9),
|
pixelOffsetScaleByDistance: new Cesium.NearFarScalar(1.5e2, 3.0, 1.5e7, 0.5)
|
},
|
billboard: {
|
image: imgs,
|
scale: 0.8,
|
width: 30,
|
height: 35,
|
pixelOffset: new Cesium.Cartesian2(0, 0),
|
// heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
|
}
|
});
|
}
|
|
},
|
// 点击弹出面板;
|
openWindow: function (id, item) {
|
for (var i = 0; i < item.lx.length; i++) {
|
|
if (id == item.lx[i].id) {
|
var xb = i;
|
layer.open({
|
title: item.lx[xb].title,
|
type: 2,
|
shadeClose: true,
|
shade: false,
|
maxmin: false, //开启最大化最小化按钮
|
area: ['802px', '526px'],
|
content: "./widgets/Scenic/popup/popup.html",
|
id: "popup",
|
closeBtn: 1,
|
success: function (layero, index) {
|
|
// 传递index给子页面
|
//var iframe = window['layui-layer-iframe' + index];
|
//iframe.child(item.lx[xb]);
|
}
|
|
});
|
}
|
}
|
|
|
},
|
});
|
});
|