效果 采用 primitives 标注,不用enitnes
1数据循环
var ak_left1_ce_option = {
gztArr: [],
init: function() {
// 标记
ak_left1_ce_option.getWrData();
},
getWrData: function() {
var temp = {};
var options = new Object();
options.url = "/manage-api/baseDaiDiao/dkXiang";
options.type = "GET";
options.data = temp;
options.errorback = akglobe_config.errBack;
options.callback = function(data) {
if (!data) return;
console.log(data);
var rows = data.rows;
ak_left1_ce_option.top4CallBack(rows);
}
akglobe_config.ajaxQuery(options);
},
}
2标注
top4CallBack: function(data, type) {
ak_left_click1.clearTop4(); // 清除标记
// 清除光环
if (ak_commonQuery.waveCircleArr) {
ak_commonQuery.clear();
}
var result = data;
this.labels = viewer.scene.primitives.add(new Cesium.LabelCollection());
var bid = new Cesium.BillboardCollection();
this.billboards = viewer.scene.primitives.add(bid);
for (var i = 0; i < result.length; i++) {
var db = result[i];
var obj = new Object();
var id = db.id;
obj.id = "ztqgGj;" + config.addtypemarker.ceccXm + ";" + db.projectName + ";" + id + ";" + db
.projectId;
obj.name = db.projectName; // 项目名称
obj.address = db.countryname;
obj.lat = db.longitude;
obj.lng = db.latitude;
obj.projectId = db.projectId;
var isxy = config.isXyobj(obj.lat, obj.lng);
if (!isxy) {
continue;
}
var src = config.markerImgProejct; //mark2
obj.src = src;
obj.width = config.markerImgProejctWidth;
obj.height = config.markerImgProejctHeight;
obj.addtypemarker = config.addtypemarker.ceccXm;
var position1 = Cesium.Cartesian3.fromDegrees(obj.lat, obj.lng, 0);
var attributes1 = obj;
var rario = 200000;
var gggzztt = null;
ak_pm_tool.addPoint(this.billboards, obj);
}
}
标注设置图片样式
使用变量配置 图标地址 方便统一管理
使用变量配置 图标大小 方便统一管理
var src = config.markerImgProejct;
obj.src = src;
obj.width = config.markerImgProejctWidth; //宽度
obj.height = config.markerImgProejctHeight; //高度 4
设置点击时候被识别的规则 ceccXm 这个配置变量代表了业务类型,后面的参数可自行定义,点击的时候可获取。
obj.id = "ztqgGj;" + config.addtypemarker.ceccXm + ";" + db.projectName + ";" + id + ";" + db
.projectId;
这个方法将这个对象加入到billboards数组集合内;清除的时候清除billboards 这个集合即可。
ak_pm_tool.addPoint(this.billboards, obj);
3点击
①:在标注的地方写好一个标记id 例: config.addtypemarker.ceccXm
②在popu.js中写相对应的id,点击后所想调用的方法。
ak_left_click1.showPopuProject(properties,position,type);
③在方法中写点击标注后的效果。
代码如下:
鼠标划过type=2; 等于1是点击。获取参数进行处理业务
showPopuProject: function(properties, position, type) {
var info = "";
if (type == 1) {
//大洲的业务 调用 展现项目信息
// ak_right_continent.init();
var id = properties.id;
var projectId = properties.address;
// alert(id+" "+projectId);
var db = {
id: id,
projectId: projectId,
};
akglobe_config.setDDoptions(db, 'ak_jwxmDetails'); // 设置要传递的参数
window.open(ak_config.tm_urm + '../business/ak_business/html/ak_ztqygl_jwxm/ak_jwxmDetails.html');
} else if (type == 2) {
var name = "";
var address = "";
if (properties.name) {
name = properties.name;
} else if (properties.NAME) {
name = properties.NAME;
}
var address = !properties.address ? "" : properties.address;
//info += '<div>基本信息</div>';
info += name; // '<br>地址:' + address + '</div>'
geo_tooltip_div.showAt(position, info);
}
},
4清除
clearObject: 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();
}
},
清除点和文本的集合
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();
}
4.1 注册到清除所有内
在清除所有的时候,需将这个清除的方法置入到clearbuiness内
这个清除会在ak_nav.clearall 内调用
调用 这个ak_init 类 。这个类的清除方法 聚合 了所有可标注的方法。及所有的标注的方法,点线面以及echarts和地图结合的效果 ,都需将清除的方法注册在这方法内: