【开发】C#添加一个KML矢量面代码示例

来源:互联网 发布:java短信群发源码 编辑:程序博客网 时间:2024/05/01 08:01


在易景地球平台里实现如何用C#语言添加一个矢量面呢?

代码如下:

          //新建线对象
            IPlaceMark poly = new PlaceMarkClass();
            poly.Name = "测试面";
            //新建的线对象需要添加到矢量对象管理器中才能显示
            IEVObjectManager kmlmanager = (EarthContorl.Scene.EvEarthScene as IEvEarthScene).KmlManager as IEVObjectManager;
            kmlmanager.Features.AppendChild(poly);
            ////////////////几何数据/////////////////////////
            //新建 面几何体
            IPolygon ls = new EVPolygon();
            //填充面的外边界数据
            for (int i = 0; i < 100; i++)
            {
                //新建一个点
                EGCoord ec = new EGCoord();
                //根据具体的数据更改这个坐标值
                ec.Latitude = 103.3;
                ec.Longitude = 39.1;
                ls.OuterBoundary.Coordinates.AppendChild(ec);
            }
            //把面几何体赋予对象
            poly.Geometry = ls;
            ///////////////////样式数据//////////////////////////
            //新建样式对象
            IStyle s = new style();
            //设置面需要填充
            s.PolyStyle.Fill = true;
            //设置面样式 颜色为蓝色
            s.PolyStyle.Color.R = 0;
            s.PolyStyle.Color.G = 0;
            s.PolyStyle.Color.B = 255;
            //设置面不透明
            s.PolyStyle.Color.A = 255;
            //显示面的外边界
            s.PolyStyle.OutLine = true;      
            //修改外边界颜色为红色
            s.LineStyle.Color.R = 255;
            s.LineStyle.Color.G = 0;
            s.LineStyle.Color.B = 0;
            //设置外边界透明度
            s.LineStyle.Color.A = 255;
            //设置外边界宽度为3个像素
            s.LineStyle.Width = 3;
            //把样式赋予对象
            poly.StyleSelector = s;

====================================================

如何设置对象的高程模式
IPolygon等对象中都有高程模式属性

如:
IPolygon.AltitudeMode

该属性的类型如下:

    /**  
    *高程模式
    */
    enum EVAltitudeMode
    {
        /**  
        *贴近地表
        */
        EVAltitudeMode_Clamp_To_Ground,
        /**  
        *相对地表
        */
        EVAltitudeMode_Relative_To_Ground,
        /**  
        *绝对高程
        */
        EVAltitudeMode_Absolute,
    };
---------------------------------------------------------------------------------
根据上面说明的属性内容就可以设置不同的高程模式了

=============================================

下面的代码是Lua语言的代码,可以直接运行,供参考:
--------------------------------------------------------------------------------------
--新建线对象
local poly = evKmlMgr:Create("PlaceMark");
poly.Name = "测试面";

--新建的线对象需要添加到矢量对象管理器中才能显示
local kmlmanager = evKmlMgr;
kmlmanager.Features:AppendChild(poly);
--////////////////几何数据/////////////////////////
  --新建 面几何体
local ls = evKmlMgr:Create("EVPolygon");
--填充面的外边界数据
for   i = 1,10 do
-- 新建一个点
   local ec = evKmlMgr:Create("EGCoord");
--根据具体的数据更改这个坐标值
   ec.Latitude = 30 + i; --纬度坐标
   ec.Longitude = 139 + i;  --经度坐标
   ls.OuterBoundary.Coordinates:AppendChild(ec);
end
         
--把面几何体赋予对象
poly.Geometry = ls;
            
--///////////////////样式数据//////////////////////////
--新建样式对象
local s = evKmlMgr:Create("Style");
--设置面需要填充
  s.PolyStyle.Fill = true;
  --设置面样式 颜色为蓝色
  s.PolyStyle.Color.R = 0;
  s.PolyStyle.Color.G = 0;
  s.PolyStyle.Color.B = 255;
  --设置面不透明
   s.PolyStyle.Color.A = 255;
   --显示面的外边界
   s.PolyStyle.OutLine = true;      
   --修改外边界颜色为红色
    s.LineStyle.Color.R = 255;
   s.LineStyle.Color.G = 0;
   s.LineStyle.Color.B = 0;
--设置外边界透明度
s.LineStyle.Color.A = 255;
--设置外边界宽度为3个像素
s.LineStyle.Width = 3;
--把样式赋予对象
  poly.StyleSelector = s;
-------------------------------------------------------------------------
1.png

0 0
原创粉丝点击