|
|
|
@ -38,7 +38,10 @@
|
|
|
|
|
|
|
|
|
|
<div class="eventNum">
|
|
|
|
|
累计事件数量(2022.05.25-至今)
|
|
|
|
|
<p><span>{{ allListDataNum }}</span>件</p>
|
|
|
|
|
<p>
|
|
|
|
|
<span>{{ allListDataNum }}</span
|
|
|
|
|
>件
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 事件感知 -->
|
|
|
|
@ -48,16 +51,23 @@
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 视频标签、列表 -->
|
|
|
|
|
|
|
|
|
|
<div class="complaintContent1">
|
|
|
|
|
<video-list-right ref="videoListRef"></video-list-right>
|
|
|
|
|
<video-list-right></video-list-right>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="keyAreas" @click="handleKeyArea">
|
|
|
|
|
|
|
|
|
|
<!-- 重点视频列表 -->
|
|
|
|
|
|
|
|
|
|
<div class="mainVideoList">
|
|
|
|
|
<video-list-left></video-list-left>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- <div class="keyAreas" @click="handleKeyArea">
|
|
|
|
|
重点区域
|
|
|
|
|
</div>
|
|
|
|
|
</div> -->
|
|
|
|
|
<!-- 工地列表 -->
|
|
|
|
|
<div class="siteList" v-if="keyAreasShow">
|
|
|
|
|
<!-- <div class="siteList" v-if="keyAreasShow">
|
|
|
|
|
<site-list-more></site-list-more>
|
|
|
|
|
</div>
|
|
|
|
|
</div> -->
|
|
|
|
|
<!-- 热力图图例 -->
|
|
|
|
|
<div class="legend"></div>
|
|
|
|
|
|
|
|
|
@ -75,33 +85,45 @@
|
|
|
|
|
<div class="title">地图显示</div>
|
|
|
|
|
<div class="change-btn-box">
|
|
|
|
|
<el-checkbox-group v-model="changeLayerBtnGroup">
|
|
|
|
|
<el-checkbox v-for="item in changeLayerBtnList" :key="item.index" :label="item" @change="layerHandleChange(item)"></el-checkbox>
|
|
|
|
|
<el-checkbox
|
|
|
|
|
v-for="item in changeLayerBtnList"
|
|
|
|
|
:key="item.index"
|
|
|
|
|
:label="item"
|
|
|
|
|
@change="layerHandleChange(item)"
|
|
|
|
|
></el-checkbox>
|
|
|
|
|
</el-checkbox-group>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="title">重点区域</div>
|
|
|
|
|
<div class="change-btn-box" style="width:230px">
|
|
|
|
|
<div class="change-btn-box" style="width: 230px">
|
|
|
|
|
<el-checkbox-group v-model="changeLayerBtnGroup">
|
|
|
|
|
<el-checkbox v-for="item in changeLayerBtnListArea" :key="item.index" :label="item" @change="layerHandleChange(item)"></el-checkbox>
|
|
|
|
|
<el-checkbox
|
|
|
|
|
v-for="item in changeLayerBtnListArea"
|
|
|
|
|
:key="item.index"
|
|
|
|
|
:label="item"
|
|
|
|
|
@change="layerHandleChange(item)"
|
|
|
|
|
></el-checkbox>
|
|
|
|
|
</el-checkbox-group>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="title">
|
|
|
|
|
<span class="special-title" @click="clearThermodynamic"> 人流热力 </span>
|
|
|
|
|
<span class="special-title" @click="clearThermodynamic">
|
|
|
|
|
人流热力
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="change-btn-box">
|
|
|
|
|
<!-- <el-checkbox-group v-model="changeLayerBtnGroup">
|
|
|
|
|
<el-checkbox v-for="item in changeLayerBtnListHot" :key="item.index" :label="item" @change="layerHandleChange(item)"></el-checkbox>
|
|
|
|
|
</el-checkbox-group> -->
|
|
|
|
|
<el-radio-group v-model="thermodynamicPeopleType" @change="changeThermodynamicPeopleType">
|
|
|
|
|
<el-radio-group
|
|
|
|
|
v-model="thermodynamicPeopleType"
|
|
|
|
|
@change="changeThermodynamicPeopleType"
|
|
|
|
|
>
|
|
|
|
|
<el-radio label="all">全市</el-radio>
|
|
|
|
|
<el-radio label="local">本地</el-radio>
|
|
|
|
|
<el-radio label="noLocal">外地</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<video-play
|
|
|
|
|
v-if="openVideo"
|
|
|
|
|
:channel-id="channelCode"
|
|
|
|
|
></video-play>
|
|
|
|
|
<video-play v-if="openVideo" :channel-id="channelCode"></video-play>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
@ -113,16 +135,25 @@ import { searchCamera } from "@/api/videoSurveillance/index";
|
|
|
|
|
import bus from "@/views/layout/bus";
|
|
|
|
|
import complaintEvent from "./components/ComplaintEvent";
|
|
|
|
|
import EarlyWarning from "./components/EarlyWarning";
|
|
|
|
|
import VideoPlay from './components/VideoPlay'
|
|
|
|
|
import VideoPlay from "./components/VideoPlay";
|
|
|
|
|
import VideoListRight from "./components/VideoListRight";
|
|
|
|
|
import VideoListLeft from "./components/VideoListLeft";
|
|
|
|
|
import SiteListMore from "./components/SiteListMore";
|
|
|
|
|
import { selectByJdWd } from "@/api/construction/index";
|
|
|
|
|
import { createSiteListPop,createCameraDetailsPop,createEventListDetailsPop,createImportantAreaPop } from "@/supermap/createMarkerPopup";
|
|
|
|
|
import { listPassengerFlow, listPassengerFlowByAllNums } from "@/api/civilizedCity.js";
|
|
|
|
|
import {
|
|
|
|
|
createSiteListPop,
|
|
|
|
|
createCameraDetailsPop,
|
|
|
|
|
createEventListDetailsPop,
|
|
|
|
|
createImportantAreaPop,
|
|
|
|
|
} from "@/supermap/createMarkerPopup";
|
|
|
|
|
import {
|
|
|
|
|
listPassengerFlow,
|
|
|
|
|
listPassengerFlowByAllNums,
|
|
|
|
|
} from "@/api/civilizedCity.js";
|
|
|
|
|
import { selectByAreaEvent, selectKeyArea } from "@/api/area";
|
|
|
|
|
import { gcjLL2wgs84LL } from "@/utils/coordinateSystemTransform";
|
|
|
|
|
// 时间轴
|
|
|
|
|
import HorizonTimeLine from './components/HorizonTimeLine'
|
|
|
|
|
import HorizonTimeLine from "./components/HorizonTimeLine";
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
@ -131,16 +162,22 @@ export default {
|
|
|
|
|
|
|
|
|
|
state: "",
|
|
|
|
|
constructionSiteData: [],
|
|
|
|
|
changeLayerBtnList: ['AI事件','视频监控', '聚集区'],
|
|
|
|
|
changeLayerBtnListArea: ['公园广场','商业街区','景区景点','海水浴场','窗口单位'],
|
|
|
|
|
changeLayerBtnListHot: ['全市','本市','外地',],
|
|
|
|
|
changeLayerBtnList: ["AI事件", "视频监控", "聚集区"],
|
|
|
|
|
changeLayerBtnListArea: [
|
|
|
|
|
"公园广场",
|
|
|
|
|
"商业街区",
|
|
|
|
|
"景区景点",
|
|
|
|
|
"海水浴场",
|
|
|
|
|
"窗口单位",
|
|
|
|
|
],
|
|
|
|
|
changeLayerBtnListHot: ["全市", "本市", "外地"],
|
|
|
|
|
changeLayerBtnGroup: [],
|
|
|
|
|
|
|
|
|
|
thermodynamicPeopleType: '',
|
|
|
|
|
thermodynamicPeopleType: "",
|
|
|
|
|
thermodynamicPeopleAll: [],
|
|
|
|
|
thermodynamicPeopleLocal: [],
|
|
|
|
|
thermodynamicPeopleNoLocal: [],
|
|
|
|
|
allListDataNum: '',
|
|
|
|
|
allListDataNum: "",
|
|
|
|
|
openVideo: false,
|
|
|
|
|
channelCode: [],
|
|
|
|
|
hotDataNum: [],
|
|
|
|
@ -148,13 +185,14 @@ export default {
|
|
|
|
|
timelineData: [],
|
|
|
|
|
// 热力图当日数据
|
|
|
|
|
hotDataAll: {},
|
|
|
|
|
keyAreasShow:false, //是否显示重点区域。
|
|
|
|
|
keyAreasShow: false, //是否显示重点区域。
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
components: {
|
|
|
|
|
TiledMap,
|
|
|
|
|
complaintEvent,
|
|
|
|
|
VideoListRight,
|
|
|
|
|
VideoListLeft,
|
|
|
|
|
SiteListMore,
|
|
|
|
|
VideoPlay,
|
|
|
|
|
HorizonTimeLine,
|
|
|
|
@ -168,16 +206,16 @@ export default {
|
|
|
|
|
this.hiMapFun
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
bus.$off('openCurrentVideoSurveillance')
|
|
|
|
|
bus.$on('openCurrentVideoSurveillance', (channelCode) => {
|
|
|
|
|
this.openVideo = true
|
|
|
|
|
this.channelCode.unshift(channelCode)
|
|
|
|
|
})
|
|
|
|
|
bus.$off('openCurrentVideoWaterPoint')
|
|
|
|
|
bus.$on('openCurrentVideoWaterPoint', channelCode => {
|
|
|
|
|
this.openVideo = true
|
|
|
|
|
this.channelCode.unshift(channelCode)
|
|
|
|
|
})
|
|
|
|
|
bus.$off("openCurrentVideoSurveillance");
|
|
|
|
|
bus.$on("openCurrentVideoSurveillance", (channelCode) => {
|
|
|
|
|
this.openVideo = true;
|
|
|
|
|
this.channelCode.unshift(channelCode);
|
|
|
|
|
});
|
|
|
|
|
bus.$off("openCurrentVideoWaterPoint");
|
|
|
|
|
bus.$on("openCurrentVideoWaterPoint", (channelCode) => {
|
|
|
|
|
this.openVideo = true;
|
|
|
|
|
this.channelCode.unshift(channelCode);
|
|
|
|
|
});
|
|
|
|
|
// 根据经纬度查询半径内所有的工地
|
|
|
|
|
bus.$off("openCauseAnalysis");
|
|
|
|
|
bus.$on("openCauseAnalysis", (row) => {
|
|
|
|
@ -188,11 +226,13 @@ export default {
|
|
|
|
|
// this.circle(latLng);
|
|
|
|
|
this.hiMap.mapObj.map.flyTo({ lat: row.wd, lng: row.jd });
|
|
|
|
|
// this.WithinRadiusSite(latLng);
|
|
|
|
|
let dataEvent = [{
|
|
|
|
|
let dataEvent = [
|
|
|
|
|
{
|
|
|
|
|
latLng: { lat: row.wd, lng: row.jd },
|
|
|
|
|
data: row,
|
|
|
|
|
type: "site",
|
|
|
|
|
}]
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
this.hiMapFun.addPointsToMap(
|
|
|
|
|
dataEvent,
|
|
|
|
|
"construction.png",
|
|
|
|
@ -202,115 +242,115 @@ export default {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
bus.$off("roadOnMap");
|
|
|
|
|
bus.$on("roadOnMap",(roadData) => {
|
|
|
|
|
bus.$on("roadOnMap", (roadData) => {
|
|
|
|
|
this.roadOnMap(roadData);
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
bus.$off("removeCameraLayer");
|
|
|
|
|
bus.$on("removeCameraLayer",(type) => {
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName(type)
|
|
|
|
|
})
|
|
|
|
|
bus.$on("removeCameraLayer", (type) => {
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName(type);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
bus.$off("CameraSingleDataOnMap");
|
|
|
|
|
bus.$on("CameraSingleDataOnMap",(labelName,data) => {
|
|
|
|
|
this.addResourceTomap(labelName,data);
|
|
|
|
|
})
|
|
|
|
|
bus.$on("CameraSingleDataOnMap", (labelName, data) => {
|
|
|
|
|
this.addResourceTomap(labelName, data);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.thermodynamic()
|
|
|
|
|
this.personToday()
|
|
|
|
|
this.getCurrentTime()
|
|
|
|
|
this.thermodynamic();
|
|
|
|
|
this.personToday();
|
|
|
|
|
this.getCurrentTime();
|
|
|
|
|
// 获取当日全部数据
|
|
|
|
|
for (let i = 0; i < this.timelineData.length; i++) {
|
|
|
|
|
this.todayAllData(this.timelineData[i].timeId)
|
|
|
|
|
this.todayAllData(this.timelineData[i].timeId);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
// 获取年月日
|
|
|
|
|
getCurrentTime () {
|
|
|
|
|
const yy = new Date().getFullYear()
|
|
|
|
|
const m = new Date().getMonth() + 1
|
|
|
|
|
const mm = m < 10 ? '0' + m : m
|
|
|
|
|
getCurrentTime() {
|
|
|
|
|
const yy = new Date().getFullYear();
|
|
|
|
|
const m = new Date().getMonth() + 1;
|
|
|
|
|
const mm = m < 10 ? "0" + m : m;
|
|
|
|
|
const dd =
|
|
|
|
|
new Date().getDate() < 10
|
|
|
|
|
? '0' + new Date().getDate()
|
|
|
|
|
: new Date().getDate()
|
|
|
|
|
? "0" + new Date().getDate()
|
|
|
|
|
: new Date().getDate();
|
|
|
|
|
|
|
|
|
|
this.gettime = yy + mm + dd
|
|
|
|
|
this.gettime = yy + mm + dd;
|
|
|
|
|
// console.log(this.gettime);
|
|
|
|
|
|
|
|
|
|
for (let i = 8; i <= 20; i++) {
|
|
|
|
|
if (i < 10) {
|
|
|
|
|
this.timelineData.push({
|
|
|
|
|
timeId: this.gettime + '0' + i + '00',
|
|
|
|
|
year: i
|
|
|
|
|
})
|
|
|
|
|
timeId: this.gettime + "0" + i + "00",
|
|
|
|
|
year: i,
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
this.timelineData.push({
|
|
|
|
|
timeId: this.gettime + i + '00',
|
|
|
|
|
year: i
|
|
|
|
|
})
|
|
|
|
|
timeId: this.gettime + i + "00",
|
|
|
|
|
year: i,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// console.log(this.timelineData);
|
|
|
|
|
},
|
|
|
|
|
// 全部
|
|
|
|
|
todayAllData (val) {
|
|
|
|
|
todayAllData(val) {
|
|
|
|
|
const params = {
|
|
|
|
|
timeId: val
|
|
|
|
|
}
|
|
|
|
|
this.hotDataAll[val] = []
|
|
|
|
|
timeId: val,
|
|
|
|
|
};
|
|
|
|
|
this.hotDataAll[val] = [];
|
|
|
|
|
listPassengerFlow(params).then((res) => {
|
|
|
|
|
// console.log(res.data);
|
|
|
|
|
// this.hotDataAll.params = res.data;
|
|
|
|
|
this.hotDataAll[val] = res.data
|
|
|
|
|
})
|
|
|
|
|
this.hotDataAll[val] = res.data;
|
|
|
|
|
});
|
|
|
|
|
// console.log(this.hotDataAll);
|
|
|
|
|
},
|
|
|
|
|
// 热力图点击事件
|
|
|
|
|
timeIdData (val) {
|
|
|
|
|
timeIdData(val) {
|
|
|
|
|
// 清除实时热力图
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('thermodynamic')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('types')
|
|
|
|
|
const dataA = []
|
|
|
|
|
const dataNumber = []
|
|
|
|
|
const dataMax = []
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("thermodynamic");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("types");
|
|
|
|
|
const dataA = [];
|
|
|
|
|
const dataNumber = [];
|
|
|
|
|
const dataMax = [];
|
|
|
|
|
|
|
|
|
|
const listB = this.hotDataAll[val]
|
|
|
|
|
console.log(listB)
|
|
|
|
|
const listB = this.hotDataAll[val];
|
|
|
|
|
console.log(listB);
|
|
|
|
|
// 最大值
|
|
|
|
|
for (let num = 0; num < listB.length; num++) {
|
|
|
|
|
dataNumber.push(listB[num].allNums)
|
|
|
|
|
dataNumber.push(listB[num].allNums);
|
|
|
|
|
}
|
|
|
|
|
const max = Math.max.apply(null, dataNumber)
|
|
|
|
|
console.log(max) // 16617
|
|
|
|
|
const max = Math.max.apply(null, dataNumber);
|
|
|
|
|
console.log(max); // 16617
|
|
|
|
|
listB.forEach((item) => {
|
|
|
|
|
const arr = [0, 0.0, '', '0', '0.0']
|
|
|
|
|
const arr = [0, 0.0, "", "0", "0.0"];
|
|
|
|
|
if (arr.indexOf(item.latitude) == -1) {
|
|
|
|
|
dataA.push([
|
|
|
|
|
Number(item.latitude),
|
|
|
|
|
Number(item.longitude),
|
|
|
|
|
Number((item.allNums / max).toFixed(1))
|
|
|
|
|
])
|
|
|
|
|
Number((item.allNums / max).toFixed(1)),
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
// 筛选
|
|
|
|
|
dataA.forEach((item) => {
|
|
|
|
|
if (item[2] > 0.1) {
|
|
|
|
|
dataMax.push(item)
|
|
|
|
|
dataMax.push(item);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.hiMapFun.thermodynamic(dataMax, 25, 'types')
|
|
|
|
|
this.hiMapFun.thermodynamic(dataMax, 25, "types");
|
|
|
|
|
// });
|
|
|
|
|
},
|
|
|
|
|
// 获取热力图的按钮
|
|
|
|
|
hotName (item) {
|
|
|
|
|
hotName(item) {
|
|
|
|
|
// console.log(item);
|
|
|
|
|
if (this.checkList.indexOf(item) == -1) {
|
|
|
|
|
this.checkList.push(item)
|
|
|
|
|
this.bottomTabList[3].img = this.bottomTabList[3].imgActive
|
|
|
|
|
this.checkList.push(item);
|
|
|
|
|
this.bottomTabList[3].img = this.bottomTabList[3].imgActive;
|
|
|
|
|
}
|
|
|
|
|
console.log(this.checkList)
|
|
|
|
|
console.log(this.checkList);
|
|
|
|
|
},
|
|
|
|
|
querySearchAsync(queryString, cb) {
|
|
|
|
|
if (queryString.length > 0) {
|
|
|
|
@ -320,10 +360,10 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 人口聚集今日事件大于5000
|
|
|
|
|
personToday () {
|
|
|
|
|
personToday() {
|
|
|
|
|
listPassengerFlowByAllNums().then((res) => {
|
|
|
|
|
this.hotDataNum = res.data
|
|
|
|
|
})
|
|
|
|
|
this.hotDataNum = res.data;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
handleSelect(item) {
|
|
|
|
|
this.hiMapFun.clearAllLayers();
|
|
|
|
@ -428,70 +468,74 @@ export default {
|
|
|
|
|
if (this.changeLayerBtnGroup.indexOf(item) !== -1) {
|
|
|
|
|
switch (item) {
|
|
|
|
|
case "AI事件":
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('EventListDetail')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("EventListDetail");
|
|
|
|
|
selectByAreaEvent().then((res) => {
|
|
|
|
|
const dataEvent = [];
|
|
|
|
|
res.data.data.events.forEach((item) => {
|
|
|
|
|
dataEvent.push(
|
|
|
|
|
{
|
|
|
|
|
latLng: { lat: item.latitude, lng: item.longitude },
|
|
|
|
|
data: item,
|
|
|
|
|
type: "eventList",
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
this.hiMapFun.addResourceOnMapWithoutSuperMapCluster(dataEvent, "poi-event.png", "EventListDetail", createEventListDetailsPop)
|
|
|
|
|
})
|
|
|
|
|
dataEvent.push({
|
|
|
|
|
latLng: { lat: item.latitude, lng: item.longitude },
|
|
|
|
|
data: item,
|
|
|
|
|
type: "eventList",
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
this.hiMapFun.addResourceOnMapWithoutSuperMapCluster(
|
|
|
|
|
dataEvent,
|
|
|
|
|
"poi-event.png",
|
|
|
|
|
"EventListDetail",
|
|
|
|
|
createEventListDetailsPop
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
break;
|
|
|
|
|
case "视频监控":
|
|
|
|
|
this.addResourceTomap('全部',this.$refs.videoListRef.cameraAllData)
|
|
|
|
|
this.addResourceTomap(
|
|
|
|
|
"全部",
|
|
|
|
|
this.$refs.videoListRef.cameraAllData
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
case "聚集区":
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('PersonHotDetail')
|
|
|
|
|
const hotEventListDetail = []
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("PersonHotDetail");
|
|
|
|
|
const hotEventListDetail = [];
|
|
|
|
|
this.hotDataNum.forEach((item) => {
|
|
|
|
|
hotEventListDetail.push({
|
|
|
|
|
latLng: { lat: item.latitude, lng: item.longitude },
|
|
|
|
|
data: item,
|
|
|
|
|
type: 'personHot'
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
type: "personHot",
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
this.hiMapFun.addPointsToMap(
|
|
|
|
|
hotEventListDetail,
|
|
|
|
|
'poi-blue.png',
|
|
|
|
|
'PersonHotDetail'
|
|
|
|
|
)
|
|
|
|
|
"poi-blue.png",
|
|
|
|
|
"PersonHotDetail"
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
case "公园广场":
|
|
|
|
|
case "商业街区":
|
|
|
|
|
case "景区景点":
|
|
|
|
|
case "海水浴场":
|
|
|
|
|
case "窗口单位":
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName(item)
|
|
|
|
|
selectKeyArea({ type: item}).then((res) => {
|
|
|
|
|
if(item === '商业街区') {
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName(item);
|
|
|
|
|
selectKeyArea({ type: item }).then((res) => {
|
|
|
|
|
if (item === "商业街区") {
|
|
|
|
|
res.data.data.forEach((newItem) => {
|
|
|
|
|
if(newItem.point) {
|
|
|
|
|
let arr = JSON.parse(newItem.point)
|
|
|
|
|
let areaLatLng = []
|
|
|
|
|
if (newItem.point) {
|
|
|
|
|
let arr = JSON.parse(newItem.point);
|
|
|
|
|
let areaLatLng = [];
|
|
|
|
|
arr.forEach((pointItem) => {
|
|
|
|
|
let lonLat = gcjLL2wgs84LL(pointItem[0], pointItem[1]);
|
|
|
|
|
areaLatLng.push([lonLat[1],lonLat[0]])
|
|
|
|
|
})
|
|
|
|
|
this.hiMapFun.addAreaToMap(areaLatLng)
|
|
|
|
|
areaLatLng.push([lonLat[1], lonLat[0]]);
|
|
|
|
|
});
|
|
|
|
|
this.hiMapFun.addAreaToMap(areaLatLng);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
const dataEvent = [];
|
|
|
|
|
res.data.data.forEach((item) => {
|
|
|
|
|
dataEvent.push(
|
|
|
|
|
{
|
|
|
|
|
latLng: { lat: item.latitude, lng: item.longitude },
|
|
|
|
|
data: item,
|
|
|
|
|
type: "site",
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
dataEvent.push({
|
|
|
|
|
latLng: { lat: item.latitude, lng: item.longitude },
|
|
|
|
|
data: item,
|
|
|
|
|
type: "site",
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
this.hiMapFun.addPointsToMap(
|
|
|
|
|
dataEvent,
|
|
|
|
|
"poi-red.png",
|
|
|
|
@ -499,7 +543,7 @@ export default {
|
|
|
|
|
createImportantAreaPop
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -511,19 +555,19 @@ export default {
|
|
|
|
|
case "景区景点":
|
|
|
|
|
case "海水浴场":
|
|
|
|
|
case "窗口单位":
|
|
|
|
|
if(item === '商业街区') {
|
|
|
|
|
this.hiMapFun.removerPolygon()
|
|
|
|
|
if (item === "商业街区") {
|
|
|
|
|
this.hiMapFun.removerPolygon();
|
|
|
|
|
}
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName(item)
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName(item);
|
|
|
|
|
break;
|
|
|
|
|
case "AI事件":
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('EventListDetail')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("EventListDetail");
|
|
|
|
|
break;
|
|
|
|
|
case "视频监控":
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('全部')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("全部");
|
|
|
|
|
break;
|
|
|
|
|
case "聚集区":
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('PersonHotDetail')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("PersonHotDetail");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
@ -531,20 +575,24 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
addResourceTomap(type,data) {
|
|
|
|
|
addResourceTomap(type, data) {
|
|
|
|
|
const dataEvent = [];
|
|
|
|
|
data.forEach((item) => {
|
|
|
|
|
const arr = [0,0.0,'','0','0.0']
|
|
|
|
|
if(arr.indexOf(item.gpsX) == -1){
|
|
|
|
|
const arr = [0, 0.0, "", "0", "0.0"];
|
|
|
|
|
if (arr.indexOf(item.gpsX) == -1) {
|
|
|
|
|
dataEvent.push({
|
|
|
|
|
latLng: { lat: Number(item.gpsY), lng: Number(item.gpsX) },
|
|
|
|
|
data: item,
|
|
|
|
|
type: 'videoSurveillance'
|
|
|
|
|
type: "videoSurveillance",
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
this.hiMapFun.addResourceOnMapWithoutSuperMapCluster(dataEvent, "videoSurveillance.png", type, createCameraDetailsPop)
|
|
|
|
|
this.hiMapFun.addResourceOnMapWithoutSuperMapCluster(
|
|
|
|
|
dataEvent,
|
|
|
|
|
"videoSurveillance.png",
|
|
|
|
|
type,
|
|
|
|
|
createCameraDetailsPop
|
|
|
|
|
);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
thermodynamic() {
|
|
|
|
@ -552,97 +600,114 @@ export default {
|
|
|
|
|
let dataNumberLocal = [];
|
|
|
|
|
let dataNumberNoLocal = [];
|
|
|
|
|
listPassengerFlow().then((res) => {
|
|
|
|
|
const data = res.data;
|
|
|
|
|
// 最大值
|
|
|
|
|
for (let num = 0; num < data.length; num++) {
|
|
|
|
|
dataNumber.push(data[num].allNums);
|
|
|
|
|
dataNumberLocal.push(data[num].localNums);
|
|
|
|
|
dataNumberNoLocal.push(data[num].nonlocalNums);
|
|
|
|
|
}
|
|
|
|
|
let max = Math.max.apply(null, dataNumber);
|
|
|
|
|
let maxLocal = Math.max.apply(null, dataNumberLocal);
|
|
|
|
|
let maxNoLocal = Math.max.apply(null, dataNumberNoLocal);
|
|
|
|
|
data.forEach((item) => {
|
|
|
|
|
const arr = [0, 0.0, "", "0", "0.0"];
|
|
|
|
|
if (arr.indexOf(item.latitude) == -1 && arr.indexOf(item.longitude) == -1) {
|
|
|
|
|
//全部
|
|
|
|
|
if(item.allNums !== '0'){
|
|
|
|
|
let allNums = Number((item.allNums / max).toFixed(1))
|
|
|
|
|
if(allNums > 0.1){
|
|
|
|
|
this.thermodynamicPeopleAll.push([
|
|
|
|
|
Number(item.latitude),
|
|
|
|
|
Number(item.longitude),
|
|
|
|
|
allNums
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//本地
|
|
|
|
|
if(item.localNums !== '0'){
|
|
|
|
|
let localNums = Number((item.localNums / maxLocal).toFixed(1))
|
|
|
|
|
if(localNums > 0.1){
|
|
|
|
|
this.thermodynamicPeopleLocal.push([
|
|
|
|
|
Number(item.latitude),
|
|
|
|
|
Number(item.longitude),
|
|
|
|
|
localNums
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//外地
|
|
|
|
|
if(item.nonlocalNums !== '0'){
|
|
|
|
|
let nonlocalNums = Number((item.nonlocalNums / maxNoLocal).toFixed(1))
|
|
|
|
|
if(nonlocalNums > 0.1){
|
|
|
|
|
this.thermodynamicPeopleNoLocal.push([
|
|
|
|
|
Number(item.latitude),
|
|
|
|
|
Number(item.longitude),
|
|
|
|
|
nonlocalNums
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
const data = res.data;
|
|
|
|
|
// 最大值
|
|
|
|
|
for (let num = 0; num < data.length; num++) {
|
|
|
|
|
dataNumber.push(data[num].allNums);
|
|
|
|
|
dataNumberLocal.push(data[num].localNums);
|
|
|
|
|
dataNumberNoLocal.push(data[num].nonlocalNums);
|
|
|
|
|
}
|
|
|
|
|
let max = Math.max.apply(null, dataNumber);
|
|
|
|
|
let maxLocal = Math.max.apply(null, dataNumberLocal);
|
|
|
|
|
let maxNoLocal = Math.max.apply(null, dataNumberNoLocal);
|
|
|
|
|
data.forEach((item) => {
|
|
|
|
|
const arr = [0, 0.0, "", "0", "0.0"];
|
|
|
|
|
if (
|
|
|
|
|
arr.indexOf(item.latitude) == -1 &&
|
|
|
|
|
arr.indexOf(item.longitude) == -1
|
|
|
|
|
) {
|
|
|
|
|
//全部
|
|
|
|
|
if (item.allNums !== "0") {
|
|
|
|
|
let allNums = Number((item.allNums / max).toFixed(1));
|
|
|
|
|
if (allNums > 0.1) {
|
|
|
|
|
this.thermodynamicPeopleAll.push([
|
|
|
|
|
Number(item.latitude),
|
|
|
|
|
Number(item.longitude),
|
|
|
|
|
allNums,
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//本地
|
|
|
|
|
if (item.localNums !== "0") {
|
|
|
|
|
let localNums = Number((item.localNums / maxLocal).toFixed(1));
|
|
|
|
|
if (localNums > 0.1) {
|
|
|
|
|
this.thermodynamicPeopleLocal.push([
|
|
|
|
|
Number(item.latitude),
|
|
|
|
|
Number(item.longitude),
|
|
|
|
|
localNums,
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//外地
|
|
|
|
|
if (item.nonlocalNums !== "0") {
|
|
|
|
|
let nonlocalNums = Number(
|
|
|
|
|
(item.nonlocalNums / maxNoLocal).toFixed(1)
|
|
|
|
|
);
|
|
|
|
|
if (nonlocalNums > 0.1) {
|
|
|
|
|
this.thermodynamicPeopleNoLocal.push([
|
|
|
|
|
Number(item.latitude),
|
|
|
|
|
Number(item.longitude),
|
|
|
|
|
nonlocalNums,
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
// 清除热力图
|
|
|
|
|
clearThermodynamic() {
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("types");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("thermodynamic");
|
|
|
|
|
this.thermodynamicPeopleType = ''
|
|
|
|
|
this.thermodynamicPeopleType = "";
|
|
|
|
|
},
|
|
|
|
|
changeThermodynamicPeopleType(value) {
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("types");
|
|
|
|
|
switch (value) {
|
|
|
|
|
case 'all':
|
|
|
|
|
case "all":
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("thermodynamic");
|
|
|
|
|
this.hiMapFun.thermodynamic(this.thermodynamicPeopleAll, 25, "thermodynamic");
|
|
|
|
|
this.hiMapFun.thermodynamic(
|
|
|
|
|
this.thermodynamicPeopleAll,
|
|
|
|
|
25,
|
|
|
|
|
"thermodynamic"
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
case 'local':
|
|
|
|
|
case "local":
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("thermodynamic");
|
|
|
|
|
this.hiMapFun.thermodynamic(this.thermodynamicPeopleLocal, 25, "thermodynamic");
|
|
|
|
|
this.hiMapFun.thermodynamic(
|
|
|
|
|
this.thermodynamicPeopleLocal,
|
|
|
|
|
25,
|
|
|
|
|
"thermodynamic"
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
case 'noLocal':
|
|
|
|
|
case "noLocal":
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("thermodynamic");
|
|
|
|
|
this.hiMapFun.thermodynamic(this.thermodynamicPeopleNoLocal, 25, "thermodynamic");
|
|
|
|
|
this.hiMapFun.thermodynamic(
|
|
|
|
|
this.thermodynamicPeopleNoLocal,
|
|
|
|
|
25,
|
|
|
|
|
"thermodynamic"
|
|
|
|
|
);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
removeRoadCauseAnalysis () {
|
|
|
|
|
this.hiMapFun.removerPolygon()
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('roadPoint')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('EventListDetail')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('PersonHotDetail')
|
|
|
|
|
removeRoadCauseAnalysis() {
|
|
|
|
|
this.hiMapFun.removerPolygon();
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("roadPoint");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("EventListDetail");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("PersonHotDetail");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("thermodynamic");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("types");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('全部')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('公园广场')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('商业街区')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('景区景点')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('海水浴场')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName('窗口单位')
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("全部");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("公园广场");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("商业街区");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("景区景点");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("海水浴场");
|
|
|
|
|
this.hiMapFun.removeLayerByLayerName("窗口单位");
|
|
|
|
|
},
|
|
|
|
|
//点击是否显示重点区域。
|
|
|
|
|
handleKeyArea(){
|
|
|
|
|
this.keyAreasShow=!this.keyAreasShow;
|
|
|
|
|
}
|
|
|
|
|
handleKeyArea() {
|
|
|
|
|
this.keyAreasShow = !this.keyAreasShow;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
beforeDestroy() {},
|
|
|
|
|
};
|
|
|
|
@ -749,14 +814,23 @@ export default {
|
|
|
|
|
background: rgba($color: #05213b, $alpha: .85)
|
|
|
|
|
}
|
|
|
|
|
.complaintContent1 {
|
|
|
|
|
position: absolute;
|
|
|
|
|
position: absolute;
|
|
|
|
|
z-index: 1000;
|
|
|
|
|
right: 10px;
|
|
|
|
|
top: 90px;
|
|
|
|
|
height:980px;
|
|
|
|
|
height:660px;
|
|
|
|
|
width: 478px;
|
|
|
|
|
background: rgba($color: #05213b, $alpha: .85)
|
|
|
|
|
}
|
|
|
|
|
.mainVideoList{
|
|
|
|
|
position: absolute;
|
|
|
|
|
z-index: 10;
|
|
|
|
|
right: 10px;
|
|
|
|
|
top: 760px;
|
|
|
|
|
width: 478px;
|
|
|
|
|
height:200px;
|
|
|
|
|
background: rgba($color: #05213b, $alpha: .85);
|
|
|
|
|
}
|
|
|
|
|
.eventNum {
|
|
|
|
|
width: 245px;
|
|
|
|
|
height: 92px;
|
|
|
|
|