效果
1.简单的实例
1.1样式
1.1.1颜色
var waveCircle = new WaveCircle(viewer);
waveCircle.createByPosition({//通过点创建波纹
lng:x,//经度
lat:y,//纬度
radius:Math.random() * 200,//波纹的半径
color:Cesium.Color.RED//颜色
});
1.1.2扫描
var objInit=new geo_radioscan();//geo_radioscan(); geo_circlescan
// var color = Cesium.Color.fromRgba(0x67ADDFFF);
var color = new Cesium.Color(0, 1, 0, 0.7);
objInit.scanColor=color;//new Cesium.Color(1.0, 0.0, 0.0, 1);
objInit.radius=50;// 半径
objInit.duration=3000; // 执行毫秒
objInit.addCircleScan(x,y); // 需要判断是否加过
1.1.3光环
var objInit=new geo_circlescan();//geo_radioscan(); geo_circlescan
objInit.scanColor= new Cesium.Color(1.0, 0.0, 0.0, 0.5);
objInit.radius=130;// 半径
objInit.duration=3000; // 执行毫秒
objInit.addCircleScan(x,y); // 需要判断是否加过
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(x,y, 200) //x ,y , 距离地面高度
});
2.正式代码
2.1循环数据
init: function(type) {
var temp = {
type:3,
};
var options = new Object();
options.url = "/manage-api/baseJcdw/getJcdw";
options.type = "GET";
options.data = temp;
options.errorback = akglobe_config.errBack;
options.callback = function(data) {
if(!data) return;
var rows = data.rows;
ak_right_populationTrq.top3CallBack(rows);
}
akglobe_config.ajaxQuery(options);
},
2.2标注
top3CallBack: function(data) {
ak_nav.clearEntines();
var result = data;
console.log(result);
this.labels = viewer.scene.primitives.add(new Cesium.LabelCollection());
this.billboards = scene.primitives.add(new Cesium.BillboardCollection());
for (var i = 0; i < result.length; i++) {
var db = result[i];
var obj = new Object();
var id = Number((new Date()).getTime() + "" + Number(Math.random() * 1000).toFixed(0));
obj.id = id;
obj.name = db.name;
obj.address = db.address;
obj.lat = db.longitude;
obj.lng = db.latitude;
var x = parseFloat(obj.lat);
var y = parseFloat(obj.lng);
obj.addtypemarker = config.addtypemarker.tzhbTrq;
obj.id = "tzhbWr;" + config.addtypemarker.tzhbTrq + ";" + db.name + ";" + db.id;
var proper = new Cesium.PropertyBag(obj);
var color = Cesium.Color.RED;
var met = ak_marker.getArrowMaterial();
var src = config.markerImgProejctdcTr; //mark4
obj.src = src;
obj.width = config.markerImgProejctdcSyjtWidth;
obj.height = config.markerImgProejctdcSyjtHeight;
obj.addtypemarker = config.addtypemarker.tzhbTrq;
//设置光波 name:名称 latitude,longitude:坐标 radius:光波半径 color:颜色
ak_commonQuery.clicklabelNew2({
"name": obj.name,
"x": x,
"y": y,
"radius": config.syj,
"color": Cesium.Color.RED,
});
ak_pm_tool.addPoint(this.billboards, obj);
}
},
ak_commonQuery中的方法
// 只是标注光环
clicklabelNew2: function(feature) {
var x = null;
var y = null;
if (!net_tool.isBlank(feature.x) && !net_tool.isBlank(feature.y)) {
x = parseFloat(feature.x); // x 轴
y = parseFloat(feature.y); // y 轴
}
if (!net_tool.isBlank(feature.lat) && !net_tool.isBlank(feature.lng)) {
x = parseFloat(feature.lat); // x 轴
y = parseFloat(feature.lng); // y 轴
}
if (!x) {
net_tool.errorBack("没有坐标信息,无法定位");
return;
}
var waveCircle = new WaveCircle(viewer);
//waveCircle.draw();
var obj = {};
obj.x = x;
obj.y = y;
obj.color = feature.color || Cesium.Color.RED;
waveCircle.createByPosition({
lng: obj.x,
lat: obj.y,
radius: feature.radius || 50,
color: obj.color
});
ak_commonQuery.waveCircleArr.push(waveCircle);
},
2.3清除
清除可分在循环标注当前类里面或单个清除;
当前类(循环数据的js):
clear: function() {
viewer.scene.primitives.remove(this.billboards); //清除点
viewer.scene.primitives.remove(this.labels); //清除文本
//清除光环
for (var i = 0; i < this.gztArr.length; i++) {
var objEntine = this.gztArr[i];
objEntine.destroy();
}
},
单个清除(ak_commonQuery.js):
/**
* 清除光波
*/
clear: function() {
for (var i = 0; i < ak_commonQuery.waveCircleArr.length; i++) {
var marker = ak_commonQuery.waveCircleArr[i];
marker.destroy();
}
ak_commonQuery.waveCircleArr = [];
},