Mars3d开发——坐标系以及事件机制

合抱之木,生于毫末; 九层之台,起于累土; 千里之行,始于足下。

文章目录

  • 前言
  • 一、常用的坐标转化
    • 1、 地理坐标(经纬度)转 笛卡尔坐标
    • 2、笛卡尔坐标 转地理坐标(经纬度)
    • 3、其它坐标系直接的转化
  • 二、事件机制
    • 1、支持的所有事件类型
    • 2、如何使用呢?


前言

一、常用的坐标转化

目前常用GIS坐标系有:
EPSG:4326坐标系:目前最通用的标准坐标系,平时我们常说的经度纬度多少多少、从GPS 设备、智能手机中取出的数据的坐标系、国际地图提供商使用的坐标系 都是这个坐标系
EPSG:3857坐标系 :Web Mercator(墨卡托)投影坐标系,该坐标系是由Google 最先发明的
EPSG:4490坐标系:2000国家大地坐标系,是我国当前最新的国家大地坐标系
CGCS2000 高斯平面投影坐标系(EPSG:4491至EPSG:4554):支持CGCS2000 Gauss-Kruger Zone 和 CGCS2000 Gauss-Kruger CM 的3度带和6度带平面投影

1、 地理坐标(经纬度)转 笛卡尔坐标

现在有经纬度坐标{lng:116.3123,lat:31.8329}

let item = {lng:116.3123,lat:31.8329} 
const points =  Cesium.Cartesian3.fromDegrees(item.lng, item.lat); //经纬度坐标转笛卡尔坐标

转化后的值为
Mars3d开发——坐标系以及事件机制_第1张图片

2、笛卡尔坐标 转地理坐标(经纬度)

现有笛卡尔坐标同上图转化后的坐标

let cartesian3 ={x:...,y...,z...}
const points = mars3d.LatLngPoint.fromCartesian(cartesian3);

3、其它坐标系直接的转化

//屏幕坐标 转换为 笛卡尔空间直角坐标
var cartesian3 = mars3d.PointUtil.getCurrentMousePosition(map.scene, windowPosition);

//笛卡尔空间直角坐标 转换为 屏幕坐标
var windowPosition = Cesium.SceneTransforms.wgs84ToWindowCoordinates(map.scene, cartesian3);

//笛卡尔空间直角坐标   转换为   地理坐标(弧度制)
var cartographic = Cesium.Cartographic.fromCartesian(cartesian3);

//笛卡尔空间直角坐标   转换为   地理坐标(经纬度)
var point = mars3d.LatLngPoint.fromCartesian(cartesian3);

//地理坐标(弧度制)   转换为   笛卡尔空间直角坐标
var cartesian3 = Cesium.Cartesian3.fromRadians(lng, lat, height); //lng\lat为弧度制

//地理坐标(经纬度)  转换为  笛卡尔空间直角坐标
var cartesian3 = Cesium.Cartesian3.fromDegrees(longitude, latitude, height); 

二、事件机制

1、支持的所有事件类型

Mars3d开发——坐标系以及事件机制_第2张图片

2、如何使用呢?

先创建一个简单的矢量数据对象 Label文字矢量数据对象。


 // 创建矢量数据图层
 const graphicLayer = new mars3d.layer.GraphicLayer()
  map.addLayer(graphicLayer)

function demo() {
  const graphic = new mars3d.graphic.LabelEntity({
    position: new mars3d.LatLngPoint(116.308659, 30.914005, 429.94),
    style: {
      text: "云深不知",
      font_size: 25,
      font_family: "楷体",
      color: "#003da6",
      horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
      verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
      visibleDepth: false
    }
  })
  graphicLayer.addGraphic(graphic) //将矢量数据添加到图层中

}

现在需要监听文字绘制完成后

graphicLayer.on(mars3d.EventType.drawCreated, function (e) {
     console.log("绘制完成")
  })

你可能感兴趣的:(mars3d技术,gis,arcgis,vue.js,javascript)