|
|
|
@ -39,22 +39,133 @@ export class LinkageForcesComponent implements OnInit {
|
|
|
|
|
{id:5,name:'90%-100%'} |
|
|
|
|
] |
|
|
|
|
checkBoxList:any[] = [ |
|
|
|
|
{id:0,name:'安监',imgUrl:'/assets/linkageForces/安监.png'}, |
|
|
|
|
{id:1,name:'电力局',imgUrl:'/assets/linkageForces/电力局.png'}, |
|
|
|
|
{id:2,name:'公安',imgUrl:'/assets/linkageForces/公安.png'}, |
|
|
|
|
{id:3,name:'海事',imgUrl:'/assets/linkageForces/海事.png'}, |
|
|
|
|
{id:4,name:'环保局',imgUrl:'/assets/linkageForces/环保局.png'}, |
|
|
|
|
{id:5,name:'交通',imgUrl:'/assets/linkageForces/交通.png'}, |
|
|
|
|
{id:6,name:'民政',imgUrl:'/assets/linkageForces/民政.png'}, |
|
|
|
|
{id:7,name:'气象局',imgUrl:'/assets/linkageForces/气象局.png'}, |
|
|
|
|
{id:8,name:'燃气局',imgUrl:'/assets/linkageForces/燃气局.png'}, |
|
|
|
|
{id:9,name:'市政',imgUrl:'/assets/linkageForces/市政.png'}, |
|
|
|
|
{id:10,name:'水利',imgUrl:'/assets/linkageForces/水利.png'}, |
|
|
|
|
{id:11,name:'通信',imgUrl:'/assets/linkageForces/通信.png'}, |
|
|
|
|
{id:12,name:'医疗',imgUrl:'/assets/linkageForces/医疗.png'}, |
|
|
|
|
{id:13,name:'应急管理',imgUrl:'/assets/linkageForces/应急管理.png'}, |
|
|
|
|
{id:14,name:'住建',imgUrl:'/assets/linkageForces/住建.png'} |
|
|
|
|
{id:0,name:'安监',imgUrl:'/assets/linkageForces/安监.png',isChecked:false}, |
|
|
|
|
{id:1,name:'电力局',imgUrl:'/assets/linkageForces/电力局.png',isChecked:false}, |
|
|
|
|
{id:2,name:'公安',imgUrl:'/assets/linkageForces/公安.png',isChecked:false}, |
|
|
|
|
{id:3,name:'海事',imgUrl:'/assets/linkageForces/海事.png',isChecked:false}, |
|
|
|
|
{id:4,name:'环保局',imgUrl:'/assets/linkageForces/环保局.png',isChecked:false}, |
|
|
|
|
{id:5,name:'交通',imgUrl:'/assets/linkageForces/交通.png',isChecked:false}, |
|
|
|
|
{id:6,name:'民政',imgUrl:'/assets/linkageForces/民政.png',isChecked:false}, |
|
|
|
|
{id:7,name:'气象局',imgUrl:'/assets/linkageForces/气象局.png',isChecked:false}, |
|
|
|
|
{id:8,name:'燃气局',imgUrl:'/assets/linkageForces/燃气局.png',isChecked:false}, |
|
|
|
|
{id:9,name:'市政',imgUrl:'/assets/linkageForces/市政.png',isChecked:false}, |
|
|
|
|
{id:10,name:'水利',imgUrl:'/assets/linkageForces/水利.png',isChecked:false}, |
|
|
|
|
{id:11,name:'通信',imgUrl:'/assets/linkageForces/通信.png',isChecked:false}, |
|
|
|
|
{id:12,name:'医疗',imgUrl:'/assets/linkageForces/医疗.png',isChecked:false}, |
|
|
|
|
{id:13,name:'应急管理',imgUrl:'/assets/linkageForces/应急管理.png',isChecked:false}, |
|
|
|
|
{id:14,name:'住建',imgUrl:'/assets/linkageForces/住建.png',isChecked:false} |
|
|
|
|
] |
|
|
|
|
//勾选力量类型checkbox在地图上显示marker
|
|
|
|
|
checkBoxChange(){ |
|
|
|
|
let LinkageForceTypes = [] |
|
|
|
|
this.checkBoxList.forEach(item =>{ |
|
|
|
|
if(item.isChecked){ |
|
|
|
|
LinkageForceTypes.push(item.id) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
let params:any = { |
|
|
|
|
PageSize : 999999, |
|
|
|
|
LinkageForceTypes:LinkageForceTypes |
|
|
|
|
} |
|
|
|
|
console.log('4444',LinkageForceTypes) |
|
|
|
|
if(LinkageForceTypes.length != 0){//如果勾选了checkbox
|
|
|
|
|
this.http.get('/api/LinkageForces',{params:params}).subscribe((data:any) => { |
|
|
|
|
console.log('所有力量',data) |
|
|
|
|
this.createMarker(data.items) |
|
|
|
|
}) |
|
|
|
|
}else{ |
|
|
|
|
this.cluster.setData([]) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
//循环渲染出所有力量markers
|
|
|
|
|
cluster:any //力量聚合实例
|
|
|
|
|
createMarker(list){ |
|
|
|
|
let markerArrcluster = [] |
|
|
|
|
this.cluster ? this.cluster.setData([]) : null |
|
|
|
|
list.forEach((item) => { |
|
|
|
|
let image |
|
|
|
|
if(item.linkageForceType == 0){//消火栓
|
|
|
|
|
image = '/assets/linkageForcesMarkers/安监.png' |
|
|
|
|
}else if(item.linkageForceType == 1){//消防水池
|
|
|
|
|
image = '/assets/linkageForcesMarkers/电力局.png' |
|
|
|
|
}else if(item.linkageForceType == 2){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/公安.png' |
|
|
|
|
}else if(item.linkageForceType == 3){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/海事.png' |
|
|
|
|
}else if(item.linkageForceType == 4){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/环保局.png' |
|
|
|
|
}else if(item.linkageForceType == 5){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/交通.png' |
|
|
|
|
}else if(item.linkageForceType == 6){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/民政.png' |
|
|
|
|
}else if(item.linkageForceType == 7){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/气象局.png' |
|
|
|
|
}else if(item.linkageForceType == 8){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/燃气局.png' |
|
|
|
|
}else if(item.linkageForceType == 9){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/市政.png' |
|
|
|
|
}else if(item.linkageForceType == 10){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/水利.png' |
|
|
|
|
}else if(item.linkageForceType == 11){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/通信.png' |
|
|
|
|
}else if(item.linkageForceType == 12){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/医疗.png' |
|
|
|
|
}else if(item.linkageForceType == 13){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/应急管理.png' |
|
|
|
|
}else if(item.linkageForceType == 14){//天然水源
|
|
|
|
|
image = '/assets/linkageForcesMarkers/住建.png' |
|
|
|
|
} |
|
|
|
|
// 用于点集合的数组
|
|
|
|
|
markerArrcluster.push({ |
|
|
|
|
lnglat : [item.location.x,item.location.y], |
|
|
|
|
image : image, |
|
|
|
|
data : item |
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
this.map.plugin(["AMap.MarkerClusterer"],() => { |
|
|
|
|
var gridSize = 60 |
|
|
|
|
var count = markerArrcluster.length; |
|
|
|
|
var _renderClusterMarker = function (context) { |
|
|
|
|
var factor = Math.pow(context.count / count, 1 / 18); |
|
|
|
|
var div = document.createElement('div'); |
|
|
|
|
var Hue = 180 - factor * 180; |
|
|
|
|
var bgColor = 'hsla(' + Hue + ',100%,40%,0.7)'; |
|
|
|
|
var fontColor = 'hsla(' + Hue + ',100%,90%,1)'; |
|
|
|
|
var borderColor = 'hsla(' + Hue + ',100%,40%,1)'; |
|
|
|
|
var shadowColor = 'hsla(' + Hue + ',100%,90%,1)'; |
|
|
|
|
div.style.backgroundColor = bgColor; |
|
|
|
|
var size = Math.round(30 + Math.pow(context.count / count, 1 / 5) * 20); |
|
|
|
|
div.style.width = div.style.height = size + 'px'; |
|
|
|
|
div.style.border = 'solid 1px ' + borderColor; |
|
|
|
|
div.style.borderRadius = size / 2 + 'px'; |
|
|
|
|
div.style.boxShadow = '0 0 5px ' + shadowColor; |
|
|
|
|
div.innerHTML = context.count; |
|
|
|
|
div.style.lineHeight = size + 'px'; |
|
|
|
|
div.style.color = fontColor; |
|
|
|
|
div.style.fontSize = '14px'; |
|
|
|
|
div.style.textAlign = 'center'; |
|
|
|
|
context.marker.setOffset(new AMap.Pixel(-size / 2, -size / 2)); |
|
|
|
|
context.marker.setContent(div) |
|
|
|
|
}; |
|
|
|
|
var _renderMarker = (context)=> { |
|
|
|
|
var content = `<img class='clusterImgCollection' src="${context.data[0].image}" alt="">`; |
|
|
|
|
var offset = new AMap.Pixel(-12.5, -12.5); |
|
|
|
|
context.marker.setContent(content) |
|
|
|
|
context.marker.setOffset(offset) |
|
|
|
|
} |
|
|
|
|
this.cluster = new AMap.MarkerCluster(this.map, markerArrcluster, { |
|
|
|
|
gridSize: gridSize, // 设置网格像素大小
|
|
|
|
|
renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式
|
|
|
|
|
renderMarker: _renderMarker, // 自定义非聚合点样式
|
|
|
|
|
}); |
|
|
|
|
this.cluster.on('click',(e)=>{ |
|
|
|
|
if(e.clusterData.length == 1){ |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
ngOnInit(): void {
|
|
|
|
|
this.getAllFireForce() |
|
|
|
|
window.onload = () => { |
|
|
|
|