IntelligentRecognition/ah-jjsp-web/bns/js/compreDisplay/terrainMap.js

417 lines
14 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let terrainMap;
// 初始化地图
function initMap(type) {
createMap(type); // 创建地图
madeBoundary(); //加载区域图
addMapControl(); // 添加自定义控件
setMapEvent(); //地图控件设置
$('#allMap').css({ 'zIndex': 999, 'backgroundColor': 'transparent' });
clearOverlay(type)
}
// 初始化地图
function initMap2(type) {
createMap2(type); // 创建地图
madeBoundary(); //加载区域图
addMapControl(); // 添加自定义控件
setMapEvent(); //地图控件设置
$('#allMap').css({ 'zIndex': 999, 'backgroundColor': 'transparent' });
getSignProAjax();
}
// 设置杆塔连线
function setTowerLine(gtList,proName){
let allOverlayList = terrainMap.getOverlays();
//循坏所有点并清除指定的点
if (allOverlayList.length > 0) {
for (let i = 0; i < allOverlayList.length; i++) {
console.log(allOverlayList[i].toString());
if (allOverlayList[i].toString() == "[object Label]" || allOverlayList[i].toString() == "[object Marker]" || allOverlayList[i].toString() == "[object Polyline]") {
terrainMap.removeOverlay(allOverlayList[i]);
}
}
}
if(gtList && gtList.length === 0){
return;
}
var points=[];
for(var i = 0; i < gtList.length; i++) {
var point=new Object();
point.lng=gtList[i].lon;
point.lat=gtList[i].lat;
point.proName=proName;
point.img = '../../img/map/bdz.png';
point.place=gtList[i].towerName;
points.push(point);
}
console.log(points)
for(var i=0, len = points.length; i<len; i++) {
//自定义图标
var pointIcon = new BMap.Icon(points[i].img,new BMap.Size(27,27));
//将标注点转化为地图上的点
var point = new BMap.Point(points[i].lat, points[i].lng);
var infoWindow = new BMap.InfoWindow( points[i].place);
//将点转化为标注点
var marker = new BMap.Marker(point,{icon:pointIcon});
//添加点图层
terrainMap.addOverlay(marker);
(function() {
let title= '<p class="map-p">工程名称:' + points[i].proName+ '</p>' +
'<p class="map-p">杆塔名称:' + points[i].place + '</p>' +
'<p class="map-p">经度:' +points[i].lat + '</p>' +
'<p class="map-p">维度:' + points[i].lng+ '</p>';
//创建label图层 points[i].place
var label = new BMap.Label(title,{position:point});
marker.addEventListener("mouseover",function() {
terrainMap.addOverlay(label);
});
marker.addEventListener("mouseout",function() {
terrainMap.removeOverlay(label);
});
})();
}
//将所有点连线连线图层polyline
var line = [];
for(var i=0; i<points.length; i++){
console.log(points[i].lng, points[i].lat)
line.push(new BMap.Point(points[i].lat, points[i].lng));
}
line.push(new BMap.Point(points[0].lat, points[0].lng));
console.log(line,'line')
console.log(line)
var polyline = new BMap.Polyline(line,{strokeColor:'#00aa00',strokeWeight:2,strokeOpacity:1});
terrainMap.addOverlay(polyline);
terrainMap.centerAndZoom(line[0],9); //设置中心点和缩放层级
}
function getTitle(points) {
console.log(points);
return
}
//地图设置start
function setMapEvent() {
terrainMap.enableScrollWheelZoom();
terrainMap.enableKeyboard();
terrainMap.enableDragging();
terrainMap.enableDoubleClickZoom();
}
//地图设置end
// 创建地图
function createMap() {
terrainMap = new BMap.Map("allMap", {
mapType: BMAP_HYBRID_MAP
}); // 创建Map实例
terrainMap.centerAndZoom('合肥', 8); // 初始化地图,设置中心点坐标和地图级别
//添加地图类型控件
// terrainMap.addControl(new BMap.MapTypeControl({
// mapTypes: [
// BMAP_NORMAL_MAP,
// BMAP_HYBRID_MAP
// ]
// }));
terrainMap.setCurrentCity("合肥"); // 设置地图显示的城市 此项是必须设置的
}
// 创建地图
function createMap2() {
terrainMap = new BMap.Map("allMap", {
// mapType: BMAP_HYBRID_MAP
}); // 创建Map实例
terrainMap.centerAndZoom('合肥', 8); // 初始化地图,设置中心点坐标和地图级别
//添加地图类型控件
// terrainMap.addControl(new BMap.MapTypeControl({
// mapTypes: [
// BMAP_NORMAL_MAP,
// BMAP_HYBRID_MAP
// ]
// }));
// terrainMap.setCurrentCity("合肥"); // 设置地图显示的城市 此项是必须设置的
}
//设置区域图 start
function madeBoundary() {
let datas = new Array("安徽省-");
var bdary = new BMap.Boundary();
for (var i = 0; i < datas.length; i++) {
getBoundary(datas[i], bdary);
}
}
function getBoundary(data, bdary) {
data = data.split("-");
bdary.get(data[0], function (rs) { //获取行政区域
var count = rs.boundaries.length; //行政区域的点有多少个
var pointArray = [];
for (var i = 0; i < count; i++) {
var ply = new BMap.Polygon(rs.boundaries[i], {
strokeWeight: 3,
strokeColor: "#1066FC",
fillOpacity: 1,
fillColor: data[1]
}); //建立多边形覆盖物
terrainMap.addOverlay(ply); //添加覆盖物
}
});
}
// 设置区域图end
//向地图添加控件start
function addMapControl() {
var mystyleJson = [{
"featureType": "road",
"elementType": "all",
"stylers": {
"lightness": 20
}
},
{
"featureType": "railway",
"elementType": "all",
"stylers": {
"visibility": "off"
}
},
{
"featureType": "local",
"elementType": "labels",
"stylers": {
"visibility": "off"
}
},
{
"featureType": "water",
"elementType": "all",
"stylers": {
"color": "#d1e5ff"
}
},
{
"featureType": "highway",
"elementType": "labels",
"stylers": {}
}
];
terrainMap.setMapStyle({
styleJson: mystyleJson
});
}
//向地图添加控件end
//创建地图覆盖物start
function createMarker(obj) { //创建地图覆盖物
var cent = "";
var pt = new BMap.Point(obj.lon, obj.lat);
var myIcon = getIcon(obj);
var marker = new BMap.Marker(pt, {
icon: myIcon
});
addClickHandler(marker, obj);
return marker;
}
//设置风险图标
function getIcon(data) {
let url = "";
let warnNum = Number(data.num) + 1;
if (data.riskType === '2') {
url = getImgUrl(2, warnNum, data.proName);
} else if (data.riskType === '3') {
url = getImgUrl(3, warnNum, data.proName);
} else if (data.riskType === '4') {
url = getImgUrl(4, warnNum, data.proName);
} else if (data.riskType === '5') {
url = getImgUrl(5, warnNum, data.proName);
}
var myIcon = new BMap.Icon(url, new BMap.Size(33, 33), { //图片大小
anchor: new BMap.Size(10, 25), //标注相对point的偏移位置
});
myIcon.setImageSize(new BMap.Size(22, 22)) //重点重点,设置图片大小
// return icon = new BMap.Icon(url, new BMap.Size(33, 33));
// icon.setImageSize(new BMap.Size(10,12)) //重点重点,设置图片大小
return myIcon;
}
function getImgUrl(type, num, proName) {
if (proName.indexOf('变电站') != -1 && proName.indexOf('线路') == -1) {
if (type == 2) {
return '../../img/map/bdz2.png';
} else if (type == 3) {
return '../../img/map/bdz3.png';
} else if (type == 4) {
return '../../img/map/bdz4.png';
} else if (type == 5) {
return '../../img/map/bdz5.png';
}
} else {
if (type == 2) {
return '../../img/map/two-risk' + num + '.png';
} else if (type == 3) {
return '../../img/map/three-risk' + num + '.png';
} else if (type == 4) {
return '../../img/map/four-risk' + num + '.png';
} else if (type == 5) {
return '../../img/map/five-risk' + num + '.png';
}
}
}
/* 设置天气图标 */
function getWeatherIcon(data) {
let url = "";
if (data.indexOf("晴") !== -1) {
url = '../../img/compreDisplay/weather/fine.png';
} else if (data.indexOf("多云") !== -1) {
url = '../../img/compreDisplay/weather/partlyCloudy.png';
} else if (data.indexOf("阴") !== -1) {
url = '../../img/compreDisplay/weather/shade.png';
} else if (data.indexOf("小雨") !== -1) {
url = '../../img/compreDisplay/weather/lightRain.png';
} else if (data.indexOf("中雨") !== -1) {
url = '../../img/compreDisplay/weather/moderateRain.png';
} else if (data.indexOf("大雨") !== -1) {
url = '../../img/compreDisplay/weather/heavyRain.png';
} else if (data.indexOf("雷阵雨") !== -1) {
url = '../../img/compreDisplay/weather/thunderstorm.png';
} else if (data.indexOf("小雪") !== -1) {
url = '../../img/compreDisplay/weather/snow.png';
} else if (data.indexOf("中雪") !== -1) {
url = '../../img/compreDisplay/weather/moderateRain.png';
} else if (data.indexOf("大雪") !== -1) {
url = '../../img/compreDisplay/weather/heavySnow.png';
} else if (data.indexOf("大风") !== -1) {
url = '../../img/compreDisplay/weather/gale.png';
} else if (data.indexOf("雨夹雪") !== -1) {
url = '../../img/compreDisplay/weather/sleet.png';
} else if (data.indexOf("雾") !== -1) {
url = '../../img/compreDisplay/weather/fog.png';
} else if (data.indexOf("雾霾") !== -1) {
url = '../../img/compreDisplay/weather/smog.png';
} else if (data.indexOf("浮尘") !== -1) {
url = '../../img/compreDisplay/weather/sinkFloat.png';
} else if (data.indexOf("沙尘暴") !== -1) {
url = '../../img/compreDisplay/weather/sandstorm.png';
}
return url;
}
//覆盖物事件start
function addClickHandler(marker, obj) {
let steelContent = '<div><p class="terrain-map-p">' + obj.proName + '</p>' +
'<p class="terrain-map-p">风险等级:' + setRiskLevelColor(obj.riskType) + '</p>' +
'<p class="terrain-map-p" title="' + obj.workContent + '">作业内容:' + sliceStr(obj.workContent) + '</p>' +
'<p class="terrain-map-p">班组长:' + dealEmptyString(obj.workManage) + ' ' + dealEmptyString(obj.workManagePhone) + '</p>' +
'<p class="terrain-map-p">预警数量:' + obj.num + '</p></div>' +
'<p class="terrain-map-p">球机:' + isOnline(obj.ballStatus) + '</p></div>';
let steelOpts = {
width: 300, //信息窗口宽度
height: 180, //信息窗口高度
enableMessage: false //设置允许信息窗发送短息
};
marker.addEventListener("mouseover", function (e) {
this.openInfoWindow(new BMap.InfoWindow(steelContent, steelOpts));
});
/* marker.addEventListener("mouseout", function () {
this.closeInfoWindow();
}
);*/
}
/*清除地形图覆盖物 */
function clearOverlay(type) {
let allOverlayList = terrainMap.getOverlays();
//循坏所有点并清除指定的点
if (allOverlayList.length > 0) {
for (let i = 0; i < allOverlayList.length; i++) {
if (allOverlayList[i].toString() == "[object Label]" || allOverlayList[i].toString() == "[object Marker]") {
terrainMap.removeOverlay(allOverlayList[i]);
}
}
}
if (type === 1) {
// 添加点覆盖物
for (let i = 0; i < mapPointList.length; i++) {
terrainMap.addOverlay(createMarker(mapPointList[i]));
}
} else if (type === 2) {
$.each(showWeatherList, function (index, item) {
let point = new BMap.Point(item.lon, item.lat);
let content = "<div class='labelStyle layout'>" +
"<div class='temp layout'><p>" + item.cictyName + "</p><p>" + item.currentTemp + "</p><img src=" + getWeatherIcon(item.weatherStatus) + "></div>" +
"<div class='temp layout'><p>" + item.weatherDes + "</p></div>" +
"</div>";
let label = new BMap.Label(content, { // 创建文本标注
position: point,
offset: new BMap.Size(-60, -40)
})
terrainMap.addOverlay(label);
})
}
}
// 单项工程
function getSignProAjax() {
let url = dataUrl + 'proteam/pot/bidTowerMain/getSingleProList';
let params = {};
ajaxRequest(url, "POST", params, true, function () {
}, function (result) {
console.log(result);
if (parseInt(result.code) == 200) {
setData(result.data);
} else if (parseInt(result.code) === 500) {
layer.alert('服务异常', { icon: 2 })
} else if (parseInt(result.code) === 401) {
logout(1);
}
}, function (xhr) {
});
function setData(bidCodeList){
let html = '';
if (bidCodeList && bidCodeList.length > 0) {
$.each(bidCodeList, function (index, item) {
if(index === 0){
html += '<option value="' + (item.proNo + "@" + item.proName) + '" checked>' + (item.proName + ''+item.num+'') + '</option>'
getSignProTowerAjax(item.proNo,item.proName);
}else{
html += '<option value="' + (item.proNo + "@" + item.proName) + '">' + (item.proName + ''+item.num+'') + '</option>'
}
})
}
$('#bidPro').empty().append(html);
layui.form.render();
}
}
// 单项工程->杆塔
function getSignProTowerAjax(proNo,proName) {
let url = dataUrl + 'proteam/pot/bidTowerMain/getSignProTowerById';
let params = {'proNo':proNo};
ajaxRequest(url, "POST", params, true, function () {
}, function (result) {
console.log(result);
if (parseInt(result.code) == 200) {
setData(result.data,proName);
} else if (parseInt(result.code) === 500) {
layer.alert('服务异常', { icon: 2 })
} else if (parseInt(result.code) === 401) {
logout(1);
}
}, function (xhr) {
});
function setData(data,proName){
setTimeout(() => {
setTowerLine(data,proName);
}, 2000);
}
}