IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Cesium中将wkt数据转化为geoJSON格式后渲染至地球上 -> 正文阅读

[JavaScript知识库]Cesium中将wkt数据转化为geoJSON格式后渲染至地球上

实现目标:点击显示按钮,调用后端传递来的接口接收wkt数据,在vscode中将wkt数据转化为geoJSON格式,并渲染至地球上。点击关闭按钮,渲染效果移除。

实现方法:

一.调用后端接口

1.后端Swagger中:

2.api的js文件中:

export function getAllData() {
    return request({
        url: '/xxxx/xxxx/all',
        method: 'get',
    });
}

3.vue文件中:

import { getAllDemolition } from '@/api/xxxx/xxxx.js'
// 点击显示按钮处,该按钮再次点击变成关闭
openAdd() {
			this.showAll = !this.showAll
			if (this.showAll == true) {
				getAllData().then((res) => {
					if (res.data.code == 200) {
					}
				})
			} 
		}

二、将后端传来的wkt数据转化为GeoJSON并渲染至地球上

1.vue文件中:在接口调用处,直接将传来的数据传递给js中的方法,前提是已引入js中的方法

import { addGeoJson, removeGeoJson } from '@/earth/xxxx/xxxx.js'
openAdd() {
			this.showAll = !this.showAll
			if (this.showAll == true) {
				getAllData().then((res) => {
					if (res.data.code == 200) {
						addGeoJSON(res.data.data)
					}
				})
			} else {
				removeGeoJson() // 移除渲染效果
			}
		}

2.写数据转换及渲染的js文件中:

import * as turf from '@turf/turf'
let WKT = require('terraformer-wkt-parser'); // 需安装

// let geojson = WKT.parse('LINESTRING (30 10, 10 30, 40 40)');
let addGeoJsonData = []
let labelsData = [];



function addGeoJSON(arr) {
    arr.forEach(item => {
        if (item.geo) {
            let geo = WKT.parse(item.geo)
                // let center = turf.pointOnFeature(geo).geometry.coordinates; // 找中心点
            switch (item.status) {
                case 'XXX':
                    addGeoJson(geo, '#ead980')
                    break
                case 'XXXX':
                    addGeoJson(geo, '#eef237')
                    break
            }
        }

    })

}

function addGeoJson(urlStr, colorStr, callback) {
    let entity = null
    if (!urlStr) return
    Cesium.GeoJsonDataSource.load(urlStr).then((dataSource) => {
        let color = Cesium.Color.fromCssColorString(colorStr).withAlpha(0.7)
        for (let i = 0; i < dataSource.entities.values.length; ++i) {
            entity = dataSource.entities.values[i]

            if (entity) {
                // 形状总体
                if (entity._polygon) {
                    entity._polygon = new Cesium.PolygonGraphics({
                        hierarchy: entity._polygon._hierarchy._value,
                        outline: false,
                        material: color,
                        classificationType: Cesium.ClassificationType.TERRAIN,
                        zIndex: 10,
                        outlineColor: color,
                        outlineWidth: 2,
                        extrudedHeight: 10,
                        show: true
                    })
                }

                // if (entity._polyline) {
                //     entity._polyline = new Cesium.PolylineGraphics({
                //         positions: entity._polyline._positions,
                //         width: 2,
                //         material: color,
                //         clampToGround: true,
                //         classificationType: Cesium.ClassificationType.TERRAIN,
                //         show: true
                //     })
                // }
            }
            entity.cursor = true
        }
        addGeoJsonData.push(dataSource)
        viewer.dataSources.add(dataSource)
        callback(dataSource.entities.values)
    })
}

// 清除拆迁数据
function removeGeoJson() {
    for (let i = 0; i < addGeoJsonData.length; ++i) {
        viewer.dataSources.remove(addGeoJsonData[i])
    }
    addGeoJsonData.length = 0
    addGeoJsonData = []
    for (let j = 0; j < labelsData.length; j++) {
        viewer.entities.remove(labelsData[j])
    }
    labelsData = []
}

export {addGeoJson, removeGeoJson }

?这样就实现了上述目标。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:23:29  更:2022-05-12 16:24:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:55:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码