北京经济技术开发区经开区虚拟城市项目-【前端】-移动端Web
11
少年
2024-02-06 b0cf75f3257f5ce04b52fd48654945cc58537147
src/utils/map2.js
@@ -1,3 +1,10 @@
// import { Feature } from "ol";
// import VectorLayer from "ol/layer/Vector";
// import VectorSource from "ol/source/Vector";
// import { Style, Icon, Fill, Stroke, Text, Circle as CircleStyle } from "ol/style";
// import { Point, LineString } from "ol/geom";
// import Overlay from 'ol/Overlay.js';
// import { unByKey } from "ol/Observable.js"; //移除事件
import Vue from 'vue';
import axios from "axios";
import _GLOBAL from '@/assets/GLOBAL2';
@@ -6,6 +13,7 @@
import { Message } from 'element-ui';
let tdglLine, qiyexinxi, qysl, ydbm, ydlx, cyfx, crzt, ydmj, crnx, crnf, rjl, jzxg, jzmd;
let objdata;
var clickEvent;
window.tdglLine = tdglLine
let PoiLayerConstructor = Vue.extend(poiLayer);
@@ -882,7 +890,7 @@
//加载三维图层
export function loadLayer(treeNode) {
    console.log('loadLayer',treeNode);
    console.log('loadLayer', treeNode);
    let layer;
    switch (treeNode.sourceType) {
        case "tms":
@@ -2191,3 +2199,210 @@
        })
    }
}
//openlayer 创建点位
window.pointArr = [];
export function createPointMarker(position, obj) {
    let startFeature = new ol.Feature({
        geometry: new ol.geom.Point(position),
    });
    startFeature.setProperties({
        desc: obj,
    });
    if (window.pointArr && window.pointArr.length > 0) {
        window.pointArr.forEach(item => {
            window.map.removeLayer(item)
        })
        window.pointArr = []
    }
    let MarkerLayer = new ol.layer.Vector({
        id: 'LocationPoint',
        name: '标记点',
        source: new ol.source.Vector({
            features: [startFeature],
        }),
        style: new ol.style.Style({
            image: new ol.style.Icon({
                src: require('@/assets/img/collection/scdw.png'),
                anchorOrigin: "top-left",
                anchorXUnits: "fraction",
                anchorYUnits: "fraction",
                offsetOrigin: "bottom-right",
                scale: 0.6,
                opacity: 1,
            })
        }),
        zIndex: 1099,
    })
    window.pointArr.push(MarkerLayer)
    return MarkerLayer;
}
//openlayer 地图点击事件
export function setClick(state) {
    function handleClick(e) {
        console.log(e.coordinate);
        // 土地管理
        if (store.tdglInfo.flag) {
            axios
                .get(
                    // "http://10.10.4.115:8022/geowinmap_xncs/ds?r=0.9158559377752831&serviceproviderid=map.vectorserviceprovider&serviceid=queryfeature&featcls=225%25E8%258C%2583%25E5%259B%25B4%25E5%2588%2586%25E5%258C%25BA%25E8%25A7%2584%25E5%2588%2592.geojson&lng=" +
                    window.gisBaseUrl + "yzxncsApi/geowinmap_xncs/ds?r=0.9158559377752831&serviceproviderid=map.vectorserviceprovider&serviceid=queryfeature&featcls=225%25E8%258C%2583%25E5%259B%25B4%25E5%2588%2586%25E5%258C%25BA%25E8%25A7%2584%25E5%2588%2592.geojson&lng=" +
                    e.coordinate[0] +
                    "&lat=" +
                    e.coordinate[1] +
                    "&geom=true&requesttype=json"
                ).then(response => {
                    let center = { lon: 0, lat: 0 };
                    if (window.tdglLine) {
                        window.map.removeLayer(window.tdglLine);
                        window.tdglLine = null;
                    }
                    var format = new ol.format.WKT(); // 创建一个 WKT 解析器
                    var feature = format.readFeature(response.data.geometry); // 解析 WKT 并生成要素对象
                    // 创建一个要素图层
                    window.tdglLine = new ol.layer.Vector({
                        source: new ol.source.Vector({
                            features: [feature] // 将要素对象加入到图层源中
                        })
                    });
                    window.map.addLayer(window.tdglLine)
                    axios
                        .get(
                            // "http://10.10.4.115:8022//poisearch/guihuacon/getInfo?ydbm=" +
                            window.gisBaseUrl + "yzxncsApi/poisearch/guihuacon/getInfo?ydbm=" +
                            response.data.NO
                        )
                        .then(
                            info => {
                                let data = info.data.data;
                                if (data.yongdishuju === null) {
                                    objdata = {
                                        POITYPE: "NOTDGL",
                                        zwxx: "暂无信息",
                                        lon: window.clickPOI.lon,
                                        lat: window.clickPOI.lat,
                                    }
                                } else {
                                    qiyexinxi = info.data.data.qiyexinxi;
                                    qysl = data.qiyexinxi.length;
                                    if (qysl > 0) {
                                        ydbm = data.qiyexinxi[0]["地块编号"];
                                    } else {
                                        ydbm = data.churangxinxi["ydbh"];
                                    }
                                    try {
                                        ydlx = data.yongdishuju["ydlxmc"];
                                    } catch (e) { }
                                    try {
                                        cyfx = data.yongdishuju["cyfx"];
                                    } catch (e) { }
                                    try {
                                        // this.crzt = response.data["ZT"];
                                        switch (response.data["ZT"]) {
                                            case 3:
                                                crzt = "已出让";
                                                break;
                                            case 4:
                                                crzt = "未出让";
                                                break;
                                        }
                                    } catch (e) { }
                                    try {
                                        ydmj = parseFloat(
                                            "" + data.yongdishuju["ydmj"]
                                        ).toFixed(0);
                                    } catch (e) { }
                                    try {
                                        crnx = data.churangxinxi["crnx"];
                                    } catch (e) { }
                                    try {
                                        crnf = data.churangxinxi["crnf"];
                                    } catch (e) { }
                                    try {
                                        rjl = data.yongdishuju["rjl"];
                                    } catch (e) { }
                                    try {
                                        jzxg = data.yongdishuju["jzxg"];
                                    } catch (e) { }
                                    try {
                                        jzmd = data.yongdishuju["jzmd"];
                                    } catch (e) { }
                                    objdata = {
                                        POITYPE: "TDGL",
                                        ydbm,
                                        ydlx,
                                        cyfx,
                                        crzt,
                                        ydmj,
                                        ydbm,
                                        crnx,
                                        crnf,
                                        rjl,
                                        jzxg,
                                        jzmd,
                                        lon: e.coordinate[0],
                                        lat: e.coordinate[1],
                                    }
                                }
                                store.setTdglShow(false);
                                store.setTdlgInfo({});
                                store.setTdglShow(true);
                                store.setTdlgInfo(objdata);
                            }
                        );
                })
            return;
        }
        window.map.forEachFeatureAtPixel(e.pixel, function (feature) {
            if (feature && feature.values_.desc) {
                let obj = feature.values_.desc
                objdata = {
                    POITYPE: "POINT",
                    name: obj.name,
                    address: obj.address,
                    lon: obj.lng,
                    lat: obj.lat
                }
                store.setTdglShow(false);
                store.setTdlgInfo({});
                store.setdwShow(true);
                store.setdwInfo(objdata);
                // if (window.instance) {
                //     window.instance.$destroy();
                // }
                // window.instance = new PoiLayerConstructor({
                //     data: {
                //         list: objdata
                //     }
                // });
                // window.instance.$mount();
            }
        });
    }
    if (state) {
        clickEvent = window.map.on('click', handleClick);
    } else {
        ol.Observable.unByKey(clickEvent)
        clickEvent = null
    }
}
export function flyToPoint(posisitons) {
    window.map.getView().animate({
        center: posisitons,
        zoom: 15,
        duration: 1500
    })
}