一、技术原理
基本原理就是由点组成线,citymaker是直接给的创建线几何接口,然后通过可视化创建对象。
方法:CityMaker创建线对象,根据两个点坐标创建可视化线对象,用到的是sdk中的IGeometryFactory(几何体工厂接口)来创建几何点和几何线,然后利用IObjectManager对象管理器接口来创建可视化线对象(创建可视化点可以设置点的样式ICurveSymbol),这里主要介绍创建线段,具体线段类型详见如图:
二、创建三维线对象
1. .NET
public void CreateRenderPolyline()
{
//利用几何工厂创建一个几何线,第一个参数为创建的几何对象类型详细见
//第二个参数为顶点属性详细见图:
IPoint point=(IPoint)gFactory.CreateGeometry(gviGeometryType.gviGeometryPoint,gviVertexAttribute.gviVertexAttributeZ);
polyline = (IPolyline)gFactory.CreateGeometry(gviGeometryType.gviGeometryPolyline,gviVertexAttribute.gviVertexAttributeZ);
point.SetCoords(100, 100, 100, 0, 0);//设置第一个点坐标
polyline.AppendPoint(point);//把第一个点加到线上
point.SetCoords(200,200,200,0,0);//设置第二个点坐标
polyline.AppendPoint(point);//把第二个点加到线上
ICurveSymbol curveSymbol = new CurveSymbol();//初始化线框样式
curveSymbol.Color = 0xff0000ff;//设置线颜色
curveSymbol.Width = 5;//设置线宽
curveSymbol.Pattern=gviDashStyle.gviDashSolid;//设置线样式,默认为实线,详见图:
polyline.Generalize(100);//线的容差值 该方法用直线代替曲线,可减少复合线的节点数,容差是容许顶点移动的最大距离。
var pLength=polyline.Length//获取线长度,适用平面坐标数据
//创建可视化线
rPolyline = rendercontrol.ObjectManager.CreateRenderPolyline(polyline, curveSymbol, rootId);
}
2. JavaScript
function createRenderPolyline(){
//利用几何工厂创建一个几何线,第一个参数为创建的几何对象类型详细见
//第二个参数为顶点属性详细见图:
var point = __g.geometryFactory.createGeometry(gviGeometryType.gviGeometryPoint,gviVertexAttribute.gviVertexAttributeZ);
var polyline = __g.geometryFactory.createGeometry(gviGeometryType.gviGeometryPolyline,gviVertexAttribute.gviVertexAttributeZ);
point.setCoords(100,100,100,0,0);//设置第一个点的坐标
polyline.appendPoint(point);//把点第一个点加入到线上
point.setCoords(200,200,200,0,0);//设置第二个点的坐标
polyline.appendPoint(point);//把点第二个点加入到线上
var curveSymbol = __g.new_CurveSymbol;//初始化线框样式
curveSymbol.color = 0xff0000ff;//设置填充颜色
curveSymbol.width = 5;//设置线宽
curveSymbol.pattern=gviDashStyle.gviDashSolid;//设置线样式,默认为实线,详见图:
polyline.generalize(100);//线的容差值 该方法用直线代替曲线,可减少复合线的节点数,容差是容许顶点移动的最大距离。
var pLength=polyline.length//获取线长度,适用平面坐标数据
//创建可视化线对象
var rPolyline = __g.objectManager.createRenderPolyline(polyline, curveSymbol, __rootId);
}
3. 注意
- 曲线线宽,默认值0(一个像素)。当取值为正数时,单位米。当取值为负数时,单位像素(最小为-5)。支持贴地。
- polyline.length获取线长度,适用平面坐标数据