cesium 经纬度绘制点_Cesium 绘制点、线、面和测距

本文介绍了如何在基于React+Cesium的WebGIS前端框架下,使用Cesium库进行点、线、面的绘制以及测距功能的实现。通过创建CustomDataSource和ScreenSpaceEventHandler,实现了不同形状的绘制,并提供了测量距离的功能。代码示例展示了从点击事件到图形绘制的完整流程。
摘要由CSDN通过智能技术生成

本文基于ES6,采用React+Cesium的Webgis前端开发框架,目前threejs和cesium的结合正在研究中。此段代码采用原生javascript,可能过程中用到了es6的扁平化语法,如()=>{},list.map方法。

废话不多说了,直接上代码。

import Cesium from 'cesium/Source/Cesium';

import monitor from '../style/images/monitor.jpeg';

const ECesium = {

version: '0.1',

description: '自定义cesium组件',

copyright: '2018-enbo'

};

ECesium.Tools = function (viewer, callback) {

this.viewer = viewer;

this.init();

};

ECesium.Tools.prototype.init = function (back) {

//初始化事件

const viewer = this.viewer;

const scene = viewer.scene;

this.drawingMode = null;

this.measureMode = null;

this.geodesic = new Cesium.EllipsoidGeodesic();

this.handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);

this.dataSource = new Cesium.CustomDataSource('test1');

viewer.dataSources.add(this.dataSource);

console.log(viewer.dataSources.indexOf(this.dataSource));

};

ECesium.Tools.prototype.draw = function (type) {

if (!this.viewer) return console.error('this.viewer 未定义');

this.deactivate();

this.drawingMode = type;

switch (type) {

case this.DRAW_TYPE.Point:

this.DrawPoint();

break;

case this.DRAW_TYPE.PolyLine:

case this.DRAW_TYPE.Polygon:

this.DrawGraphics();

break;

default:

break;

}

};

ECesium.Tools.prototype.DrawPoint = function (callback) {

const viewer = this.viewer;

const this_ = this;

this.drawingMode = "point";

this.handler.setInputAction(function (evt) {

const ray = viewer.camera.getPickRay(evt.position);

const mapPosition = this_.getMapPoint(ray);

if (!mapPosition) return;

this_.dataSource.entities.add({

id: '云台' + Math.random(),

name: '林火监测点',

position: Cesium.Cartesian3.fromDegrees(mapPosition.x, mapPosition.y, mapPosition.z),

point: new Cesium.PointGraphics({

color: Cesium.Color.SKYBLUE,

pixelSize: 10,

outlineColor: Cesium.Color.YELLOW,

outlineWidth: 3,

heightReference: Cesium.HeightReference.CLAMP_TO_GROUND

}),

description: ``

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值