明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
  博客园  :: 首页  :: 管理

Skyline WEB端开发 ——添加一个定位点、文本标签

Posted on 2020-04-22 08:28  且行且思  阅读(468)  评论(0编辑  收藏  举报

Skyline 添加定位点

sgworld.Creator.CreatePosition
CreatePosition(
X,                //兴趣点的东西方向坐标,即经度
Y,                //兴趣点的南北方向坐标,即纬度
Altitude,        //兴趣点的高程,即高度
AltitudeType,    /*
               * 一个枚举值,定义了高程类型。
               * 0代表定位点在地面以上指定高度。
               * 1代表定位点在海平面的高度。
               * 2代表在地形表面创建定位点。
               * 3代表定位点在基于椭球基准面的地形数据库指定高度位置。
               * 4代表以一定高度创建在 3DML 之上
               * 注:1 和 2 的值应用于二维的形状和多边形。4 只适用于图片和文本标签。
               * */
Yaw,            //视点和兴趣点的偏移角度。范围 0°到 360°,0=北,90=东,180=南,270=西
Pitch,            //视点和兴趣点的俯仰角度。范围-90°到+90°,0=水平,+90=自下到上垂直,-90=自上到下垂直。
Roll,            //视点和兴趣点的翻滚角度。范围-90°到+90°,0=水平,+90=完全向右翻滚,-90=完全向左翻滚。
Distance        //距离点坐标(X,Y,height)的距离,点必须在视线范围内。
);

Skyline 添加文本标签

sgworld.Creator.CreateLabel
CreateLabel(
Position,        //表示点的位置和方向
Text,            //需要显示的文本
ImageFileName,    //显示在标签中的图像文件的完整路径或 URL。如果给参数传递 Null 则只创建文本标签。
LabelStyle,        /* 标签样式(例如,颜色,字体和可视距离属性)
               * Bold 如果这个参数设置为 TRUE,字体样式设置为粗体。
               * FontName 字体的名称。
               * FontSize 以像素为单位的字体大小。文本的大小尺寸范围从 8 至 72。
               * FrameFileName 一个全路径名或一个框架文件的 URL,为标签边界使用的文件。
               * Italic 如果这个参数设置为 TRUE,字体样式设置为斜体。
               * Underline 如果是 TRUE,字体样式设置下划线。
               * LimitScreenSize 如果这个参数设置为 TRUE,当摄像机靠近的时候,标签保持其原始大小。
               * LineToGround 如果这个参数设置为 true,一条线从支点向下延伸。
               * LockMode 该文本标签的位置参数,自动调整面对镜头并确定被锁定的位置组字段值。
               * MaxImageSize 图像的最大尺寸。
               * MaxViewingHeight 确定该标签可见的最大高度。
               * MinViewingHeight 确定的最低可见高度。飞行时比该值低,标签消失。
               * MultilineJustification 如果有多行文本,此选项决定文本对齐方式。可以有以下值之一:"left","rihgt"或"center"。(默认:"center")。
               * PivotAlignment 决定了标签相对于其支点对齐:Top, Left; Top, Center; Top, Right; Center, Left; Center, Center; Center, Right; Bottom, Left; Bottom, Center; Bottom, Right。
               * Scale 标签在每个像素的尺寸,最大字符高度为文字大小的倍数值。
               * ShowTextBehavior 确定的标签中包含的文字图像和文字能否始终显示或当鼠标光标悬停在标签上面才会显示。0代表始终显示标签的文本。1代表仅当鼠标悬停在标签的图标显示标签的文本。
               * SmallestVisibleSize 获取和设置文字的最小高度。以像素为单位。当摄像机靠近时,标签消失。
               * TextAlignment 决定了有关的背景文本的水平和垂直对齐方式。该文本的有关背景图像的水平对齐有以下值之一:Left, TopLeft, TopRight, Top, Right, RightBottom, Bottom, BottomLeft (默认: Bottom).
               * TextOnImage 如果为 true,则文本显示在标签中的图像之上。否则,标签扩大使文字围绕图像显示。如果此标签集没有图像,则此参数被忽略。
               */
GroupID,        /* 标签在工程树中的位置,如果它被设置为空字符串,对象在根目录下创建。 也可以通过下列方法之一,来取得的 GroupID:
               * 1、使用 IProjectTree66.CreateGroup 创建组。
               * 2、如果你知道这个名字,使用 IProjectTree66.FindItem 查找组。
               * 3、使用 IProjectTree66 中的方法遍历组,例如 GetNextItem, 直到找到想要的组的 ID。
               */
Description        //标签在项目树中的名称,如果这个参数为一个空字符串,TerraExplorer 自动分配一个唯一的名称。
)
下面是一个简单的方法示例可以进行参考
//传入点的经度、维度、高度
function DrawLabel(x, y, z) {
    try {
        //创建点
        var labelPos = sgworld.Creator.CreatePosition(x, y, z, 2);

        var cLabelStyle = sgworld.Creator.CreateLabelStyle();

        cLabelStyle.TextOnImage = false; //设置文本是否显示在图像上。设置true(字在图上),设置false(字在图下)
        cLabelStyle.Bold = true; //设置粗体
        //                cLabelStyle.LineToGroundType = 1;//无此参数
        cLabelStyle.MultilineJustification = "center"; //如果有多行文字的话,确定文本对齐方式
        cLabelStyle.TextAlignment = "Bottom"; //决定了有关的背景文本的水平和垂直对齐。
        cLabelStyle.MaxViewingHeight = 800; //最大高度,如果超过此高度后,该点将隐藏

        var cLabelPath = "F:\\myself\\images\\green_bubble.png"; //图片路径
        var label1 = sgworld.Creator.CreateLabel(labelPos, "guanxin", cLabelPath, cLabelStyle, sgworld.ProjectTree.FindItem("新建组 ##575097"), "green_bubble");

        sgworld.Navigate.FlyTo(label1);

        labelPos.X += 0.001;

        labelPos.Altitude += 0; //添加点的高度

        var cLabelPath2 = "F:\\myself\\images\\grey_bubble.png"; //图片路径
        var label2 = sgworld.Creator.CreateLabel(labelPos, "北京科技有限公司.\r\n西安办事处\r\n", cLabelPath2, cLabelStyle, sgworld.ProjectTree.FindItem("新建组 ##575097"), "grey_bubble");
    } catch(e) {
        alert("Unexpected error: " + e.description);
    }
}