一、技术原理

基本原理就是由点组成线,citymaker是直接给的创建线几何接口,然后通过可视化创建对象。
方法:CityMaker创建线对象,根据两个点坐标创建可视化线对象,用到的是sdk中的IGeometryFactory(几何体工厂接口)来创建几何点和几何线,然后利用IObjectManager对象管理器接口来创建可视化线对象(创建可视化点可以设置点的样式ICurveSymbol),这里主要介绍创建线段,具体线段类型详见如图:



CityMaker几何体——线 - 图1
CityMaker几何体——线 - 图2

二、创建三维线对象

1. .NET

  1. public void CreateRenderPolyline()
  2. {
  3. //利用几何工厂创建一个几何线,第一个参数为创建的几何对象类型详细见
  4. //第二个参数为顶点属性详细见图:
  5. IPoint point=(IPoint)gFactory.CreateGeometry(gviGeometryType.gviGeometryPoint,gviVertexAttribute.gviVertexAttributeZ);
  6. polyline = (IPolyline)gFactory.CreateGeometry(gviGeometryType.gviGeometryPolyline,gviVertexAttribute.gviVertexAttributeZ);
  7. point.SetCoords(100, 100, 100, 0, 0);//设置第一个点坐标
  8. polyline.AppendPoint(point);//把第一个点加到线上
  9. point.SetCoords(200,200,200,0,0);//设置第二个点坐标
  10. polyline.AppendPoint(point);//把第二个点加到线上
  11. ICurveSymbol curveSymbol = new CurveSymbol();//初始化线框样式
  12. curveSymbol.Color = 0xff0000ff;//设置线颜色
  13. curveSymbol.Width = 5;//设置线宽
  14. curveSymbol.Pattern=gviDashStyle.gviDashSolid;//设置线样式,默认为实线,详见图:
  15. polyline.Generalize(100);//线的容差值 该方法用直线代替曲线,可减少复合线的节点数,容差是容许顶点移动的最大距离。
  16. var pLength=polyline.Length//获取线长度,适用平面坐标数据
  17. //创建可视化线
  18. rPolyline = rendercontrol.ObjectManager.CreateRenderPolyline(polyline, curveSymbol, rootId);
  19. }

2. JavaScript

  1. function createRenderPolyline(){
  2. //利用几何工厂创建一个几何线,第一个参数为创建的几何对象类型详细见
  3. //第二个参数为顶点属性详细见图:
  4. var point = __g.geometryFactory.createGeometry(gviGeometryType.gviGeometryPoint,gviVertexAttribute.gviVertexAttributeZ);
  5. var polyline = __g.geometryFactory.createGeometry(gviGeometryType.gviGeometryPolyline,gviVertexAttribute.gviVertexAttributeZ);
  6. point.setCoords(100,100,100,0,0);//设置第一个点的坐标
  7. polyline.appendPoint(point);//把点第一个点加入到线上
  8. point.setCoords(200,200,200,0,0);//设置第二个点的坐标
  9. polyline.appendPoint(point);//把点第二个点加入到线上
  10. var curveSymbol = __g.new_CurveSymbol;//初始化线框样式
  11. curveSymbol.color = 0xff0000ff;//设置填充颜色
  12. curveSymbol.width = 5;//设置线宽
  13. curveSymbol.pattern=gviDashStyle.gviDashSolid;//设置线样式,默认为实线,详见图:
  14. polyline.generalize(100);//线的容差值 该方法用直线代替曲线,可减少复合线的节点数,容差是容许顶点移动的最大距离。
  15. var pLength=polyline.length//获取线长度,适用平面坐标数据
  16. //创建可视化线对象
  17. var rPolyline = __g.objectManager.createRenderPolyline(polyline, curveSymbol, __rootId);
  18. }

3. 注意

  1. 曲线线宽,默认值0(一个像素)。当取值为正数时,单位米。当取值为负数时,单位像素(最小为-5)。支持贴地。
  2. polyline.length获取线长度,适用平面坐标数据