/** * 固废 */ // 区分不同类型 使用不同img const defaultImg = '/assets/images/map/solidwaste/voc.png' const setting = '/assets/images/map/solidwaste/gf_green.png' // 请求接口数据 const mapApi = require('../../../api/mapApi').default // 使用封装方法 const AnimalService = require('../service/AnimalService').default const publicBounced = require('../../BaseNav/PublicBounced/PublicBounced').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: [50, 50], iconAnchor: [25, 25] }) }) /* marker.bindTooltip(getSolidWasteData[i].Name, { permanent: true, offset: [0, 14], direction: 'bottom', className: 'company-bindTooltip' }) */ layer.addLayer(marker) } } this.bindTooltip = (layer) => { return layer.options.totransferData.Name } this.clickListener = (e) => { // 点击marker的pulse()光波 this.animalService.pulseEffect(e.latlng) /* 点击数据的接口请求 */ this.requestSolidWasteData(e).then(e) } // 不同类型图片封装 this.differentTypes = (judgeValue) => { var effectOfChange if (judgeValue === 1) { effectOfChange = defaultImg } else { effectOfChange = setting } return effectOfChange } // 根据点击不同数据 进行接口的数据请求 this.requestSolidWasteData = async (e) => { // 基本信息展示 const dataValue = { StoragePlaceId: e.layer.options.totransferData.StoragePlaceId } const resultBasic = await mapApi.getSolidWasteBaseInfo(dataValue) // 详细信息展示 const resultDetailed = await mapApi.getSolidWasteDetail(dataValue) const PublicBounced = window.Vue.extend(publicBounced) const instance = new PublicBounced() instance.$mount() document.body.appendChild(instance.$el) instance.setData(resultBasic.Result.DataInfo, resultDetailed, 'gufei') /* flyTo()弹出框平移事件 */ this.setPanTo(e.latlng, 200) } // 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) } }