初遇Citymaker (六)

发布时间:2022-06-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了初遇Citymaker (六)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

这次我们来说下要素构建

  • 要素构建

```javasctiptimport { cw5 } from "../index.js";

export const geometryCreator = {};

//原生类型值反映射枚举; type, 代表高程

let innerType = {0: "unknown",1: "point",2: "modelPoint",4: "POI",6: "circularArc",10: "line",11: "circle",30: "polyline",31: "ring",32: "compoundLine",50: "polygon",51: "triMesh",70: "collection",71: "multiPoint",72: "multiPolyline",73: "multiPolygon",74: "multiTrimesh",77: "closedTriMesh",100: "pointCloud"};

/**

  • 创建点要素

  • xyz 坐标

  • m 测量值

  • id ID

  • */geometryCreator.createPoint = function(x, y, z, m = 0, id = 0) {var point = cw5.__g.geometryFactory.createPoint(cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);

     

    if (x != null && y != null && z != null) {point.setCoords(x, y, z, m, id);}

     

    if (point != null) {let geometry =geometryCreator.createGeometry(point)return geometry;}}

/**

  • 创建线要素

  • paths Number[][]

  • */geometryCreator.createPolyline = function(paths) {let latitude = null;let longitude = null;let height = null;let position = cw5.__g.new_Vector3;let pathpoint = cw5.__g.geometryFactory.createPoint(cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);let line = cw5.__g.geometryFactory.createGeometry(cw5.innerConfig.gviGeometryType.gviGeometryPolyline, cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);//向线路中添加点if (paths != null) {for (let i = 0; i < paths.length; i++) {latitude = paths[i][0];longitude = paths[i][1];height = paths[i][2];

     

    position.set(latitude, longitude, height);pathpoint.position = position;line.appendPoint(pathpoint);}}if (line != null) {let geometry =geometryCreator.createGeometry(line)return geometry;}};

/**

  • 创建POI要素

  • xyz 坐标

  • m 测量值

  • id ID

  • */geometryCreator.createPOI = function(x, y, z, m = 0, id = 0) {

     

    var point = cw5.__g.geometryFactory.createGeometry(cw5.innerConfig.gviGeometryType.gviGeometryPOI, cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);//初始化矢量点对象point.setCoords(x, y, z, m, id);

     

    if (point != null) {let geometry =geometryCreator.createGeometry(point)return geometry;}};

/**

  • 创建多边形要素

  • paths Number[][]

  • */geometryCreator.createPolygon = function(paths) {let polygon = cw5.__g.geometryFactory.createGeometry(cw5.innerConfig.gviGeometryType.gviGeometryPolygon, cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZM);if (polygon == null) {return;}

     

    if (paths != null) {var exteriorRing = polygon.exteriorRing;

     

    let latitude = null;let longitude = null;let height = null;let position = cw5.__g.new_Vector3;let pathpoint = cw5.__g.geometryFactory.createPoint(cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);

     

    //向边界中添加点for (let i = 0; i < paths.length; i++) {latitude = paths[i][0];longitude = paths[i][1];height = paths[i][2];position.set(latitude, longitude, height);pathpoint.position = position;exteriorRing.appendPoint(pathpoint);}// exteriorRing.reverseOrientation()}

     

    let geometry =geometryCreator.createGeometry(polygon)return geometry;};

/**

  • 创建点模型
  • modelName 模型路径
  • xyz 坐标
  • m 测量值
  • id ID
  • */geometryCreator.createModelPoint = function(modelName,x, y, z, m = 0, id = 0) {var modelPoint= cw5.__g.geometryFactory.createGeometry(cw5.innerConfig.gviGeometryType.gviGeometryModelPoint, cw5.innerConfig.gviVertexAttribute.gviVertexAttributeZ);//初始化矢量点对象modelPoint.modelName = modelName;modelPoint.setCoords(x, y, z, m, id);if (modelPoint != null) {let geometry =geometryCreator.createGeometry(modelPoint)return geometry;}};

/**

  • 创建geometry 从原生对象

  • object citymaker原生geometry

  • */geometryCreator.createGeometry = function(object) {let type =innerType[object.geometryType] ;

     

    let geometry={

 更多参考 https://xiaozhuanlan.com/topic/1652098437

脚本宝典总结

以上是脚本宝典为你收集整理的初遇Citymaker (六)全部内容,希望文章能够帮你解决初遇Citymaker (六)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: