实例模板
下载模板:
应用:大屏项目二次开发
模板路径:应用空间-萧山金融办-场景备份-复件 (2)金融驾驶舱v1 (hte2021_06_22105550187)导入文件没有放入服务无法正确显示
1、预览效果
2、实现原理
基于乐创者报表(lczReport)中单元格的自定义控件功能+百度地图api实现。
3、配置步骤
3.1、引入echarts等js文件(按顺序引入js)
filterComponents.js
filterComponents.css
3.2、报表模板中设置自定义控件
3.3、配置脚本
ER.widget.extend(this, {
type: 'echarts',
handleChartClickEvent: function (params) {},
init: function (datas, element, echarts) {
this.map = new BMap.Map(element, {
enableMapClick: false
});
var point = new BMap.Point(120.242007, 30.248772);
this.map.centerAndZoom(point, 14.5);
this.map.enableScrollWheelZoom(true);
// styleJsonLi 是地图样式
this.map.setMapStyle({
"styleJson": styleJsonLi
})
var totalContent = datas.content;
for (var j = 0; j < totalContent['id'].length; j++) {
var markerobj = {}
var marker = new BMap.Marker(new BMap.Point(totalContent['lan'][j], totalContent['lat'][j]), {
icon: getIcon(totalContent['type'][j]),
offset: iconOffset
});
this.map.addOverlay(marker); //增加点
marker.hide()
markerobj['type'] = totalContent['type'][j]
markerobj['marker'] = marker
markerobj['content'] = totalContent['content'][j]
markerobj['name'] = totalContent['name'][j]
makerlist.push(markerobj);
}
window.handleSelectSearch = handleSelectSearch;
window.handleCheckedDataChange = handleCheckedDataChange;
this.totalContent = datas.content;
this.markerLabel = {
"markerPoint": [], // 坐标点
"nameLabel": [], // 名称label
"cntPoint": [], // 统计点 小绿点
"cntPointName": [], // 统计点名称
"contentLabel": [] // tooltip
};
$('<div id="search"></div><div id="filter"></div><div class="angle"></div>').insertAfter(element);
// 当前筛选框选中的数组
this.selectedValue = [];
var that = this;
var iconOffset = new BMap.Size(0, -38);
searchFilterFunc(that.totalContent);
function handleSelectSearch(value) {
// that.map.clearOverlays();
for (var i = 0; i < makerlist.length; i++) {
makerlist[i]['marker'].hide();
}
for (var j = 0; j < pointLabelList.length; j++) {
pointLabelList[j]['label'].hide()
}
that.selectedValue = [];
for (var j = 0; j < makerlist.length; j++) {
var markerObj = makerlist[j]
if (markerObj['name'] == value.value) {
markerObj['marker'].show()
}
}
$('.infoLabel').parent('.BMapLabel').remove();
showContentLabel(value['lan'], value['lat'], value['content'], value['value'], null, that.map);
// showNameLabel(value['lan'], value['lat'], value['value'], null, that.map, null);
to(value['lan'], value['lat'], that.map);
addClickHandler(value['content'], marker, value['value'], 'info', null, that.map, that.selectedValue);
};
// filter
function handleCheckedDataChange(value, trigger) {
var pointArray = [];
that.selectedValue = value;
selectedList = value;
for (var j = 0; j < pointLabelList.length; j++) {
pointLabelList[j]['label'].hide()
}
for (var i = 0; i < makerlist.length; i++) {
makerlist[i]['marker'].hide();
}
if (!value || value.length == 0) {
that.map.centerAndZoom(point, 14.5);
return
}
for (var i = 0; i < value.length; i++) {
for (var j = 0; j < makerlist.length; j++) {
var markerObj = makerlist[j]
if (markerObj['type'] == value[i].value) {
markerObj['marker'].show()
addClickHandler(markerObj['content'], markerObj['marker'], markerObj['name'], 'info', null, that.map, that.selectedValue);
pointArray.push(markerObj['marker'].point);
}
}
}
var zoom;
if (pointArray.length == 1) {
that.map.centerAndZoom(that.map.getViewport(pointArray).center, 14)
zoom = 14
} else {
that.map.centerAndZoom(that.map.getViewport(pointArray).center, that.map.getViewport(pointArray).zoom)
}
var nowZoom = that.map.getZoom();
if (trigger == 'click') {
zoomToDetail(value, that.map, pointArray);
} else if ((parseInt(nowZoom) <= zoomNumber)) {
zoomEndHanlder(that.map, that.selectedValue, that.totalContent)
} else {
zoomToDetail(value, that.map, pointArray);
}
}
that.map.addEventListener('zoomend', function () {
// 打印出当前缩放值
var nowZoom = that.map.getZoom();
if ((nowZoom <= zoomNumber)) {
zoomEndHanlder(that.map, that.selectedValue, that.totalContent)
} else {
zoomToDetail(that.selectedValue, that.map);
}
})
},
beforeLinkage: function (params) {
var that = this;
this.reloadData(function (data) {
for (var j = 0; j < pointLabelList.length; j++) {
pointLabelList[j]['label'].hide()
}
for (var i = 0; i < makerlist.length; i++) {
makerlist[i]['marker'].hide();
}
var reloadContent = data.content;
let typeArray = reloadContent["type"].reduce((pre, cur) => {
if (!pre.includes(cur)) {
return pre.concat(cur)
} else {
return pre
}
}, [])
if (typeArray.length > 1) {
that.selectedValue = []
let typeObj = {}
filterVue.checkedData = []
for (var i = 0; i < filterVue.results.length; i++) {
for (let j = 0; j < typeArray.length; j++) {
if (filterVue.results[i].value == typeArray[j]) {
filterVue.checkedData.push(filterVue.results[i])
that.selectedValue.push(filterVue.results[i])
}
}
}
// filterVue.checkedData = that.selectedValue;
} else {
that.selectedValue = [{
name: reloadContent['type_name'][0] + "(" + reloadContent["id"].length + ")",
value: reloadContent['type'][0]
}];
for (var i = 0; i < filterVue.results.length; i++) {
if (filterVue.results[i].value == that.selectedValue[0].value) {
filterVue.checkedData = [filterVue.results[i]]
}
}
}
filterVue.checkAll = false;
filterVue.isIndeterminate = true;
var pointArray = [];
var iconOffset = new BMap.Size(0, -38);
// that.map.clearOverlays();
if (!reloadContent || reloadContent.length == 0) {
that.map.centerAndZoom(point, 14.5);
// that.map.clearOverlays();
}
for (var j = 0; j < reloadContent['id'].length; j++) {
for (var i = 0; i < makerlist.length; i++) {
var markerObj = makerlist[i]
if (markerObj.type == reloadContent['type'][j]) {
makerlist[i]['marker'].show()
pointArray.push(new BMap.Point(reloadContent['lan'][j], reloadContent['lat'][j]));
addClickHandler(markerObj['content'], markerObj['marker'], markerObj['name'], 'info', null, that.map, null);
}
// var marker = new BMap.Marker(new BMap.Point(reloadContent['lan'][j], reloadContent['lat'][j]), {
// icon: getIcon(reloadContent['type'][j]),
// offset: iconOffset
// });
// that.map.addOverlay(marker); //增加点
// showNameLabel(reloadContent['lan'][j], reloadContent['lat'][j], reloadContent['name'][j], null, that.map);
}
}
if (pointArray.length == 1) {
to(pointArray[0]['lng'], pointArray[0]['lat'], that.map)
} else {
that.map.centerAndZoom(that.map.getViewport(pointArray).center, that.map.getViewport(pointArray).zoom)
}
})
return false;
}
})
作者:倪 创建时间:2024-07-25 14:52
最后编辑:倪 更新时间:2025-04-22 15:31
最后编辑:倪 更新时间:2025-04-22 15:31
