上饶市警务平台后台管理前端
zhongrj
2023-02-20 f02caef2e782b578b2a29b84b59b15e2f43648f2
src/components/map/dcSearchMap.vue
@@ -5,26 +5,27 @@
</template>
<script>
let pointLayer = null
export default {
    name: "dcSearchMap",
    props: ['isDetail', 'point'],
    data () {
    data() {
        return {
            pointLayer: null,
            currentPoint: null,
            //绘制工具
            plotTool: null,
            coordinates: []
        }
    },
    created () {
    created() {
    },
    mounted () {
    mounted() {
    },
    methods: {
        init () {
        init() {
            let self = this
            if (global.searchViewer != null) {
                global.searchViewer = null
@@ -34,7 +35,7 @@
                initViewer()
            })
            function initViewer () {
            function initViewer() {
                //配置viewer
                global.searchViewer = new global.DC.Viewer('search-viewer-container', {
                    contextOptions: {
@@ -48,18 +49,30 @@
                })
                //加载地图
                // global.searchViewer.imageryLayers.addImageryProvider(
                //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
                //         url: 'https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal',
                //         format: 'image/jpeg',
                //         show: true,
                //         maximumLevel: 18
                //     })
                // )
                global.searchViewer.imageryLayers.addImageryProvider(
                    new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
                        url: 'https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal',
                        format: 'image/jpeg',
                        show: true,
                        maximumLevel: 18
                    new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
                        url: "http://10.141.11.11:8090/MapTileService/wmts?STORETYPE=merged-dat&PROJECTION=4326",
                        layer: "wmts_4326_361100",
                        style: "default",
                        format: "image/png",
                        tileMatrixSetID: "c",
                        tileMatrixLabels: new Array(18).fill(0).map((v, i) => i + 1),
                        tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
                    })
                )
                //添加图层
                self.pointLayer = new global.DC.VectorLayer('polygonLayer')
                global.searchViewer.addLayer(self.pointLayer)
                pointLayer = new global.DC.VectorLayer('polygonLayer')
                global.searchViewer.addLayer(pointLayer)
                self.plotTool = new global.DC.Plot(global.searchViewer, {
                    icon_center: "/img/dwicon.jpeg", // 自定义的中心点图标
@@ -74,8 +87,8 @@
                    // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                    // fromDegrees()方法,将经纬度和高程转换为世界坐标
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                        //设置坐标为上饶市
                        117.951478782, 28.447896798, 1800.0
                        //设置坐标为上饶市信州区
                        117.966460, 28.431002, 5000.0
                    ),
                    orientation: {
                        // 指向
@@ -94,7 +107,7 @@
        },
        //开始绘画
        draw () {
        draw() {
            const self = this
            if (this.polygon) {
                this.clearDraw()
@@ -102,18 +115,18 @@
            //鼠标左键事件
            let leftClick = function (event) {
                if (self.currentPoint) {
                    self.pointLayer.removeOverlay(self.currentPoint)
                    pointLayer.removeOverlay(self.currentPoint)
                    self.currentPoint = null
                }
                let point = new global.DC.Point(new global.DC.Position(event.wgs84SurfacePosition.lng, event.wgs84SurfacePosition.lat))
                point.setStyle({
                    pixelSize: 10,
                    color: global.DC.Color.RED, //颜色
                    outlineColor: global.DC.Color.WHITE, //边框颜色
                    outlineWidth: 2, //边框大小,
                })
                let point = new global.DC.Billboard(new global.DC.Position(event.wgs84SurfacePosition.lng, event.wgs84SurfacePosition.lat), 'img/dwicon.jpeg')
                // point.setStyle({
                //     pixelSize: 10,
                //     color: global.DC.Color.RED, //颜色
                //     outlineColor: global.DC.Color.WHITE, //边框颜色
                //     outlineWidth: 2, //边框大小,
                // })
                self.currentPoint = point
                self.pointLayer.addOverlay(point)
                pointLayer.addOverlay(point)
                let pointLonLat = [event.wgs84SurfacePosition.lng, event.wgs84SurfacePosition.lat]
                self.$emit("getMapData", pointLonLat)
            }
@@ -121,11 +134,11 @@
            global.searchViewer.on(global.DC.MouseEventType.LEFT_DOWN, leftClick)
        },
        //重置
        clearDraw () {
        clearDraw() {
            this.polygonLayer.clear()
        },
        //转换成数据库数据
        doData (val) {
        doData(val) {
            let str = "LINESTRING("
            for (let k = 0; k < val.length; k++) {
                str += `${val[k][0]} ${val[k][1]}`
@@ -139,7 +152,7 @@
            return '\'' + str + '\''
        },
        //回显点
        showPoint (positions) {
        showPoint(positions) {
            let viewer = global.searchViewer
            if (positions) {
                let pointData = ""
@@ -148,21 +161,32 @@
                pointArray = pointData[1].split(" ")
                let position = new global.DC.Position(pointArray[0], pointArray[1])
                let point = new global.DC.Point(position)
                point.setStyle({
                    pixelSize: 10,
                    color: global.DC.Color.RED, //颜色
                    outlineColor: global.DC.Color.WHITE, //边框颜色
                    outlineWidth: 2, //边框大小,
                })
                let point = new global.DC.Billboard(position, 'img/dwicon.jpeg')
                // point.setStyle({
                //     pixelSize: 10,
                //     color: global.DC.Color.RED, //颜色
                //     outlineColor: global.DC.Color.WHITE, //边框颜色
                //     outlineWidth: 2, //边框大小,
                // })
                this.currentPoint = point
                this.pointLayer.addOverlay(point)
                viewer.flyTo(this.pointLayer)
                pointLayer.addOverlay(point)
                viewer.flyTo(pointLayer)
            }
        },
        setView(points) {
            if (points) {
                let position = new global.DC.Position(Number(points.lng), Number(points.lat), 2000, 0, -90, 0)
                let point = new global.DC.Billboard(position, 'img/dwicon.jpeg')
                this.currentPoint = point
                pointLayer.clear()
                pointLayer.addOverlay(point)
                global.searchViewer.flyToPosition(
                    new global.DC.Position(Number(points.lng), Number(points.lat), 2000, 0, -90, 0)
                )
            }
        }
    }
}
</script>
<style scoped>
</style>
<style scoped></style>