/**
|
* 固废
|
*/
|
const WasteSolidIndex = require('@components/BaseNav/WasteSolid/WasteSolidIndex').default
|
// 区分不同类型 使用不同img
|
const defaultImg = '/assets/images/map/solidwaste/voc.png'
|
const setting = '/assets/images/map/solidwaste/gf_green2.png'
|
|
// 请求接口数据
|
const mapApi = require('../../../api/mapApi').default
|
// 使用封装方法
|
const AnimalService = require('../service/AnimalService').default
|
|
module.exports = function () {
|
/**
|
* 返回marker对象数组
|
* @param L leaflet对象
|
*/
|
this.init = async (layer, L) => {
|
this.animalService = new AnimalService({
|
L: L,
|
layer: layer
|
})
|
const result = await mapApi.getSolidWaste()
|
const getSolidWasteData = result.Result.DataInfo || {}
|
// 循环遍历数据 根据进行marker 的创建
|
for (let i = 0; i < getSolidWasteData.length; i++) {
|
// 经纬度 位置
|
const positionX = getSolidWasteData[i].Latitude
|
const positionY = getSolidWasteData[i].Longitude
|
|
// 定义类型 用来区分数据的不同 1.接口接口数据来进行数据的判断 2.根据数据类型的不同,进行不同类型的图片显示
|
const judgeValue = getSolidWasteData[i].StorageQty
|
var iconUrl = this.differentTypes(judgeValue)
|
|
const marker = L.marker([positionX, positionY], {
|
totransferData: getSolidWasteData[i],
|
icon: L.icon({
|
iconUrl: iconUrl,
|
iconSize: [30, 30],
|
iconAnchor: [15, 15]
|
})
|
})
|
layer.addLayer(marker)
|
}
|
}
|
|
this.bindTooltip = (layer) => {
|
return layer.options.totransferData.Name
|
}
|
|
this.clickListener = (e) => {
|
// 点击marker的pulse()光波
|
this.animalService.pulseEffect(e.latlng)
|
// 弹框标题
|
const title = e.layer.options.totransferData.Name
|
window.$layer.open({
|
content: {
|
content: WasteSolidIndex, // 组件
|
parent: this, // 父组件
|
data: { // 传递的参数
|
storagePlaceId: e.layer.options.totransferData.StoragePlaceId
|
}
|
},
|
title: title // 标题
|
})
|
/* flyTo()弹出框平移事件 */
|
this.setPanTo(e.latlng, 300)
|
}
|
|
// 不同类型图片封装
|
this.differentTypes = (judgeValue) => {
|
var effectOfChange
|
if (judgeValue === 1) {
|
effectOfChange = defaultImg
|
} else {
|
effectOfChange = setting
|
}
|
return effectOfChange
|
}
|
|
// flayTo() 弹框的可滑动事件
|
this.setPanTo = (pos, value) => {
|
var position = pos
|
position = window.map.latLngToLayerPoint(position)
|
position.y += value
|
position = window.map.layerPointToLatLng(position)
|
window.map.flyTo(position)
|
}
|
}
|