superMap3D中绘制点、线、面

superMap3D中绘制点、线、面

new SuperMap3D.DrawHandler(viewer, mode, clampMode)

名称作用
viewer球体实例
mode绘制模式,包含点、线、面、图标
clampMode绘制风格

具体参数用法

mode
模式写法
pointSuperMap3D.DrawMode.Point
lineSuperMap3D.DrawMode.Line
polygonSuperMap3D.DrawMode.Polygon
markerSuperMap3D.DrawMode.Marker
boxSuperMap3D.DrawMode.Box
clampMode
模式写法
贴地模式SuperMap3D.ClampMode.Ground
栅格化模式SuperMap3D.ClampMode.Raster
贴对象模式SuperMap3D.ClampMode.S3mModel
空间模式SuperMap3D.ClampMode.Space

内置方法

activeEvt激活绘制事件
handler.activeEvt.addEventListener(result=>{
    console.log(result)  // 返回是否激活绘制
});
movingEvt监听鼠标位置
handler.movingEvt.addEventListener(result=>{
    console.log(result) // 返回鼠标位置
});
drawEvt监听是否完成绘制
handler.drawEvt.addEventListener(result=>{
    console.log(result) // 返回绘制结果
});
activate()激活功能

handler.activate()

clear()清除已绘制的图形

handler.clear()

deactivate()清除功能

handler.deactivate()

具体案例写法

码上掘金

superMap3D中三维转二维(点、线、面)

获取点信息并转换

目前采用的二维技术是iclient8c API

利用SuperMap.Geometry.Point将获取的坐标点转为二维的点信息

handler.drawEvt.addEventListener(result=>{
    console.log(result) // 返回绘制结果
    const cartographic = Cesium.Cartographic.fromCartesian(pick)
    const lon = Cesium.Math.toDegrees(cartographic.longitude)
    const lat = Cesium.Math.toDegrees(cartographic.latitude)
    const geometryParams = new SuperMap.Geometry.Point(lon, lat)
});
若是面时处理方案

先将返回的多个点的信息转成point多点,然后再将点数组,转成LinearRing环线,利用SuperMap.Geometry.Polygon将环线信息转成面。

handler.drawEvt.addEventListener(result=>{
    console.log(result) // 返回绘制结果
    result.positions.forEach(cartesian => {
            const cartographic = new Cesium.Cartographic.fromCartesian(
              cartesian
            )
            const longitude = Cesium.Math.toDegrees(cartographic.longitude)
            const latitude = Cesium.Math.toDegrees(cartographic.latitude)
            const geometryParams = new SuperMap.Geometry.Point(
              longitude,
              latitude
            )
            geojsonCoordinates.push(geometryParams)
          })
          const linearRings = new SuperMap.Geometry.LinearRing(
            geojsonCoordinates
          )
          const geometry = new SuperMap.Geometry.Polygon([linearRings])
});
在SuperMap.Geometry.Polygon中有三个比较常用的方法,
方法名作用返回
getArea获得区域面积,从区域的外部口径减去计此区域内部口径算所得的面积。{float}几何对象的面积
getGeodesicArea计算投影到球面上的多边形近似面积{float}多边形近似测地面积
intersects判断两个几何对象是否相交{Boolean} 两个几何对象是否相交
distanceTo计算两个几何对象间的最小距离{Number 、Object}返回一个几何对象到目标几何对象的距离

在SuperMapJavaScriptAPI中还存在一些其他的用法

superMap3D中二维转三维(geometry)

先将geometry转成GeoJson文件,在采用GeoJsonDataSource去添加数据

 const geoJsonData = new SuperMap.Format.GeoJSON() 
            features.forEach(item=>{
              const geoJsonPolygon = geoJsonData.write(item.geometry)
              const polygons = JSON.parse(geoJsonPolygon) 
              window.viewer.dataSources.add(Cesium.GeoJsonDataSource.load(polygons, {
                stroke: Cesium.Color.RED,
                fill: Cesium.Color.RED,
                strokeWidth: 5,
              }));
            })

SuperMap.Format.GeoJSON解析器使用

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值