//模块:这是Entiy方式加载的点数据示例 var widgetPointQy = mars3d.widget.bindClass(mars3d.widget.BaseWidget.extend({ options: { resources: ['map.css'], }, dataSource: null, //初始化[仅执行1次] create: function () { this.dataSource = new Cesium.CustomDataSource(); //添加到图层控制 if (window.bindToLayerControl) { var that = this; this.layerWork = bindToLayerControl({ pid: 30, name: '企业', visible: true, onAdd: function () {//显示回调 if (!that.viewer.dataSources.contains(that.dataSource)) that.viewer.dataSources.add(that.dataSource); }, onRemove: function () {//隐藏回调 if (that.viewer.dataSources.contains(that.dataSource)) that.viewer.dataSources.remove(that.dataSource); }, onCenterAt: function (duration) {//定位回调 that.viewer.flyTo(that.dataSource.entities, { duration: duration }); }, }); } //从图层控制中 移除 // if(this.layerWork){ // unbindLayerControl(this.layerWork); // } }, arrdata: [], //打开激活 activate: function () { if (!this.viewer.dataSources.contains(this.dataSource)) this.viewer.dataSources.add(this.dataSource); this.arrdata = this.config.dataQy; if (this.arrdata) { this.addFeature(this.arrdata); } else { var that = this; $.getJSON(serverURL_file+ "/apidemo/qiye/point.json", function (result) { that.arrdata = result.Data; for (var j = 0; j < that.arrdata.length; j++) { var item = that.arrdata[j]; //为了详情面板展示,所绑定的示例数据 item.QYZP = 5; item.CPZP = 4; item.QYJJ = "有"; item.JJ = [ { "NF": "2015", "ZCZ": 6000 + haoutil.math.random(10, j * 1000), "LY": 1000 + haoutil.math.random(10, j * 1000), "NSE": 1000 + haoutil.math.random(10, j * 1000) }, { "NF": "2016", "ZCZ": 10000 + haoutil.math.random(10, j * 1000), "LY": 3000 + haoutil.math.random(10, j * 1000), "NSE": 3000 + haoutil.math.random(10, j * 1000) }, { "NF": "2017", "ZCZ": 25000 + haoutil.math.random(10, j * 1000), "LY": 5000 + haoutil.math.random(10, j * 1000), "NSE": 5000 + haoutil.math.random(10, j * 1000) } ]; } that.addFeature(that.arrdata, true); }); } }, //关闭释放 disable: function () { if (this.viewer.dataSources.contains(this.dataSource)) this.viewer.dataSources.remove(this.dataSource); }, clear: function () { this.viewer.mars.tooltip.close(); this.dataSource.entities.removeAll() }, objData: {}, addFeature: function (arr, iscenter) { this.clear(); var that = this; that.objData = {}; $(arr).each(function (i, item) { that.objData[item.ID] = item; var jd = Number(item.JD); var wd = Number(item.WD); //var z = 0; //===========无坐标数据=========== if (isNaN(jd) || jd == 0 || isNaN(wd) || wd == 0) return; item.JD = jd; item.WD = wd; var inthtml =`
${item.NAME}
${item.LX}
` var position = Cesium.Cartesian3.fromDegrees(jd, wd); //添加实体 var entity = that.dataSource.entities.add({ name: item.JC, position: position, point: { //像素点 color: new Cesium.Color.fromCssColorString("#3388ff"), pixelSize: 10, outlineColor: new Cesium.Color.fromCssColorString("#ffffff"), outlineWidth: 2, heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, //贴地 scaleByDistance: new Cesium.NearFarScalar(1000, 1, 1000000, 0.1) }, //billboard: { //图标点 // image: 'img/marker/mark1.png', // scale: 1, // horizontalOrigin: Cesium.HorizontalOrigin.CENTER, // verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, // scaleByDistance: new Cesium.NearFarScalar(1000, 1, 1000000, 0.1) //}, //model: { //模型 // uri: serverURL_gltf+ '/mars/leida.glb', // scale: 1, // minimumPixelSize: 50 //}, //orientation: Cesium.Transforms.headingPitchRollQuaternion(position, new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(0), 0, 0)), //方向 label: { text: item.JC, font: 'normal small-caps normal 19px 楷体', style: Cesium.LabelStyle.FILL_AND_OUTLINE, fillColor: Cesium.Color.AZURE, outlineColor: Cesium.Color.BLACK, outlineWidth: 2, horizontalOrigin: Cesium.HorizontalOrigin.CENTER, verticalOrigin: Cesium.VerticalOrigin.BOTTOM, pixelOffset: new Cesium.Cartesian2(0, -10),   //偏移量   heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, //贴地 distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0.0, 200000) }, data: item, tooltip: { html: inthtml, anchor: [0, -12], }, click: function (entity) {//单击回调 that.showXQ(entity.data.ID); } }); item._entity = entity; }); //console.log(JSON.stringify(arr)); if (iscenter) that.viewer.flyTo(that.dataSource.entities, { duration: 3 }); return arr; }, getData: function () { return this.arrdata; }, //打开详情 showXQ: function (id) { var item = this.objData[id]; if (item === null) return; mars3d.widget.activate({ uri: 'widgetsTS/qyDetailsView/widget.js', dataQy: item, }); //弹出自己的单独页面或其他站点url页面。 //layer.open({ // type: 2, // title: '详情页面', // fix: true, // shadeClose: false, // maxmin: true, // area: ["80%", "80%"], // content: "test.html?id="+id, // skin: "layer-mars-dialog animation-scale-up", // success: function (layero) { // } //}); }, queryData: function (params) { var newdata = []; this.clear(); var arrdata = this.arrdata; for (var i = 0; i < arrdata.length; i++) { var item = arrdata[i]; if (params.key == "" || item.NAME.indexOf(params.key) != -1) { newdata.push(item); if (item._entity) { this.dataSource.entities.add(item._entity); } } } return newdata; }, lastCenter: null, clearLastCenter: function () { this.viewer.mars.tooltip.close(); if (this.lastCenter == null) return; //if (this.lastCenter.billboard) // this.lastCenter.billboard.image = this.path + 'img/mark.png'; if (this.lastCenter.point) this.lastCenter.point.color = new Cesium.Color.fromCssColorString("#3388ff"); this.lastCenter = null; }, centerAt: function (id) { var that = this; this.clearLastCenter(); var item = this.objData[id]; if (item === null) return; var entity = item._entity; if (entity == null) { toastr.warning(item.JC + " 无经纬度坐标信息!"); return; } this.viewer.mars.centerAt({ x: item.JD, y: item.WD, minz: 2500 }); var currentTime = this.viewer.clock.currentTime; setTimeout(function () { that.viewer.mars.tooltip.show(entity, entity.position.getValue(currentTime)); }, 3000); this.lastCenter = entity; //if (this.lastCenter.billboard) // this.lastCenter.billboard.image = this.path + 'img/mark2.png'; if (this.lastCenter.point) this.lastCenter.point.color = new Cesium.Color.fromCssColorString("#ff0000"); var that = this; setTimeout(function () { that.clearLastCenter(); }, 10000); } }));