zoukankan      html  css  js  c++  java
  • SkylineGlobe 如何二次开发实现天际线分析功能

    天际线效果:

    示例代码:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>ToolTitle</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <link rel="StyleSheet" href="../Style.css" type="text/css">
        <style>
        </style>
    </head>
    <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" style="border: 0px" id="Body"  class="hideUntillTranslated" onload="Init()">
        <!--oncontextmenu="return false;">  onclick="bHide=true;HideOptionsNow()" > -->
        <table border="0" width="100%" cellspacing="0" cellpadding="2">
            <tr>
                <td class="ToolTopArea" id="TopAreaTD" width="100%" valign="middle" >
                    <table border="0" width="100%" cellspacing="0" cellpadding="0">
                        <tr>
                            <td width="55px"><img style="margin-left:5px;" src="ToolIcon.png" alt="" /></td>
                            <td id="TitleTD" align="center" class="s12w i18n">ToolName</td>
                            <td align="right" id="CloseHelpTd"><img style="margin-right:5px;" alt="" src="../CommonImg/help.png" border="0" class="i18n" alt="help" title="help" onclick="DisplayHelpPopup6(SGLang.i18nFile('help.html'),SGLang.i18n('help'))" style="cursor: pointer;"></td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td  class="ToolTopSeperator"></td>
            </tr>        <tr class="s8">
                <td >
                    <table class="PropertiesSheet" cellspacing="0" cellpadding="2" >
            <tr class='TableOtherLine'>
                <td class="s8b">
                    <label class="i18n">Text7</label>
                </td>
                <td align="left">
                    &nbsp;<select id="OutputTypeID" onchange="TypeChanged();" >
                        <option class="i18n" value=0 selected="selected">Text8</option>
                        <option class="i18n" value=1 >Text9</option>
                        <option class="i18n" value=2 >Text10</option>
                    </select>
                </td>     
            </tr>
    
            <tr >
                <td class="s8b">
                    <label class="i18n">Text4</label>
                </td>
                <td align="left">
                    &nbsp;<select id="AccuracyID" >
                        <option class="i18n" value=0 selected="selected">Text5</option>
                        <option class="i18n" value=1 >Text6</option>
                    </select>
                </td>     
            </tr>
    
             <tr class='TableOtherLine'> <!--Radius-->
                <td class="s8b">
                    <label class="i18n">Text12</label>
                </td>
                <td align="left">
                    <input id="radiusID" type="text" value="1000" onchange="ValidateInput();"   /> <span class="i18n">Text13</span>
                </td>     
            </tr>
            <tr>   <!--Viewer Altitude-->
                <td class="s8b">
                    <label class="i18n">Text16</label>
                </td>
                <td align="left">
                    <input id="ViewerAltitudeID" type="text" value="5" /> <span class="i18n">Text13</span>
                </td>     
            </tr>
            <tr class='TableOtherLine'> <!--  Elevation Angle-->
                <td class="s8b">
                    <label class="i18n">Text22</label>
                </td>
                <td align="left">
                    <input id="ElevationAngleID" type="text" value="0" onchange="ValidateInput();"  /> <span class="i18n">Text34</span>
                </td>     
            </tr> 
    
     
        </table>
         </td>
            </tr>
            <tr >
                <td colspan="2" align="center" class="ToolButtonsArea">
                    <button id="Draw" class="MenuButton" onclick="CreateObjects(1);">               <img src="img/SetPoint.png" /><br />         <span class="i18n">Text20</span></button>
                    <button id="groupButton" class="MenuButton" onclick="SelectGroupClipboard(0)"><img src="../commonimg/group.png" /><br /><span class="i18n">Text14</span></button>
                    <button id="clipboardButton" class="MenuButton" onclick="SelectGroupClipboard(1)"><img src="../commonimg/Clipboard.png" /><br /><span class="i18n">Text15</span></button>
                    <div id="ProfileID" style="display:none;"> <button class="MenuButton MenuButtonLast" onclick="ShowProfile();"><img src="img/profile.png" /><br /><span class="i18n">Text18</span></button> </div>
                </td>
            </tr>
        </table>
    
        <object id="SGWorld" classid="CLSID:3a4f9199-65a8-11d5-85c1-0001023952c1">    </object>
    
    <script language="javascript" src="../ToolsCommon65.js"></script>
    <script language="JavaScript">
    
    var gCircle = null;
    var gViewshed = null;
    var gLayer;
    var gType = 0;
    //var gPositionsArray = [];
    var gDomePoints=[];
    var gLineArray = [];
    var gRingArray = [];
    var gRingList = [];
    //var gElevationRingArray = [];
    var gYawArray = [];
    var gRingObj = null;
    var gColorArray = ["#ff0000", "#00ff00", "#0000FF", "#FF00FF", "#C0FFFF", "#FFFF00", "#FFC119", "#B16CF8", "#D2FF01", "#AD8943"];
    var gPopupCaption = "";
    
    var gLineIndex = 0;
    var gMainGroup = null;
    var gGroup = null;
    var gVisibilityDistance;
    var gInEdit = 0;
    var gOriginalPosition = null;
    var yawStep ;
    var pitchStep;
    var gNumDome = 1;
    
    //--------------
    // Init
    function Init() {
        if (GetParamValue("inSG", "") == "1") {
            $("#TopAreaTD").attr("height", "57");
            $("#TitleTD").attr("align", "left");
            $("#CloseHelpTd").attr("display", "none");
        }
    }
    
    //------------------
    // Reset
    //------------------
    function Reset(FirstTime, FromMouseInputMode) {
    
        try {
            if (gCircle != null)
                SGWorld.Creator.DeleteObject(gCircle.ID);
            if (gViewshed != null)
                SGWorld.Creator.DeleteObject(gViewshed.ID);
        } catch (e) { }
    
        gType = 0;
        gCircle = null;
        gViewshed = null;
        gLayer = null;
        gGroup = null;
        gOriginalPosition = null;
        //gPositionsArray = [];
        gLineArray = [];
        gRingArray = [];
    //    gElevationRingArray = [];
        gYawArray = [];
        gLineIndex = 0;
    
        $("#Draw").removeClass("MenuButtonHighlight");
        $("#groupButton").removeClass("MenuButtonHighlight");
        $("#clipboardButton").removeClass("MenuButtonHighlight");
    
        SGWorld.ProjectTree.EnableRedraw(1);
        SGWorld.Window.HideMessageBarText();
    
        if (gInEdit>0) {
            SGWorld.DetachEvent("OnLButtonClicked", OnLButtonClicked);
            SGWorld.DetachEvent("OnRButtonUp", OnRButtonUp);
            SGWorld.DetachEvent("OnFrame", OnFrame);
            SGWorld.DetachEvent("OnInputModeChanged", OnInputModeChanged);
        }
        gInEdit = 0;
    
        if (FirstTime != 1 && FromMouseInputMode == 0)
            SGWorld.Window.SetInputMode(0);
    }
    
    //--------------
    // CreateObjects
    //--------------
    function CreateObjects(method) {
        if (gInEdit==0) {
            gInEdit = 1;
            gNumDome = 1;
            gRingArray = [];
            gRingList = [];
            SGWorld.AttachEvent("OnLButtonClicked", OnLButtonClicked);
            SGWorld.AttachEvent("OnRButtonUp", OnRButtonUp);
            SGWorld.AttachEvent("OnFrame", OnFrame);
            SGWorld.AttachEvent("OnInputModeChanged", OnInputModeChanged);
            SGWorld.Window.SetInputMode(1, abspath() + "/cursor_m.cur", true);
            SGWorld.Window.ShowMessageBarText(SGLang.i18n("Text23"));
            $(event.srcElement).addClass("MenuButtonHighlight");
    
            try {
                var a = SGWorld.ProjectTree.GetItemName(gMainGroup);
            }
            catch (e) { gMainGroup = SGWorld.ProjectTree.CreateGroup(SGLang.i18n("ToolName"), SGWorld.ProjectTree.RootID); }
    
            var pos = SGWorld.Creator.CreatePosition(0, 0, 0, 0, 0, 0, 0, 0);
            gCircle = SGWorld.Creator.CreateCircle(pos, $("#radiusID").val(), SGWorld.Creator.CreateColor(255, 0, 0, 255), SGWorld.Creator.CreateColor(255, 255, 255, 100), gMainGroup, SGLang.i18n("Text24"));
            gCircle.NumberOfSegments = 50;
            gCircle.LineStyle.Width = -5;
        }
        else {
            Reset (false,false);
        }
    }
    //-----------
    // SelectGroupClipboard
    function SelectGroupClipboard(searchType) {
        if (searchType == 0) {
            var node = SGWorld.ProjectTree.GetNextItem("", 10);
            if (node == 0 || !(SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node))) {
                alert(SGLang.i18n("Text32"));
                return;
            }
        }
    
        $(event.srcElement).addClass("MenuButtonHighlight");
        SGWorld.Window.ShowMessageBarText(SGLang.i18n("Text31"));
        gNumDome = 1;
    
        gDomePoints = [];
        gRingArray = [];
        gRingList = [];
    
        if (searchType == 0)
            searchGeometries2(node, AddDomeToList);
        if (searchType == 1)
            searchGeometriesClipboard(AddDomeToList);
    
        var CreateTheObjects = true;
        if (gDomePoints.length > 10)
            CreateTheObjects = confirm(SGLang.i18n("Text35") + gDomePoints.length + SGLang.i18n("Text36"));
    
        if (CreateTheObjects)
            for (var i = 0; i < gDomePoints.length; i++) 
                CalculateDome (gDomePoints[i].pos, gDomePoints[i].objType, gDomePoints[i].AltitudeType);
    
        Reset(0, 0);
    }
    
    //------------
    //  OnLButtonClicked
    function OnLButtonClicked(Flags, X, Y) {
        if (gInEdit == 0)
            return;
        var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, 1 + 16 + 64 + 128 + 8192);
        if (CursorCoord == null)
            return false;
    
        if (gInEdit == 1)  // First click, center point
        {
            var viewerAltitude = 1.0*$("#ViewerAltitudeID").val();
            CursorCoord.Position.Altitude = CursorCoord.Position.Altitude + viewerAltitude;
            gCircle.Position = CursorCoord.Position.Copy();
           
            if (gCircle != null) {
    
                CalculateDome(gCircle.Position, 18, 3);  //supported types:  18 = label, 24 = image label
            }
        }
    }
    //------------
    //  OnRButtonUp
    function OnRButtonUp(Flags, X, Y) {
        if (gInEdit == 0)
            return;
    
        Reset(false, false);
    }
    //------------
    //  OnFrame
    function OnFrame() {
        if (gInEdit != 1)
            return;
        try {
            var mouseInfo = SGWorld.Window.GetMouseInfo();
            var CursorCoord = SGWorld.Window.pixelToWorld(mouseInfo.X, mouseInfo.Y, 1 + 16 + 64 + 128 + 8192);
            if (CursorCoord == null)
                return false;
            var viewerAltitude = 1.0 * $("#ViewerAltitudeID").val();
            CursorCoord.Position.Altitude = CursorCoord.Position.Altitude + viewerAltitude;
            gCircle.Position = CursorCoord.Position.Copy();
    
            gCircle.Radius = $("#radiusID").val();
        }
        catch (e)    { }
    }
    //------------
    //  OnInputModeChanged
    function OnInputModeChanged(NewMode) {
        if (NewMode != 1)
            if (gInEdit != 0)
                Reset(0, 1);
    }
    
    //---------
    //AddDomeToList
    function AddDomeToList(pos, objType, AltitudeType) {
        gDomePoints.push({ pos: pos, objType: objType, AltitudeType: AltitudeType });
        return true;
    }
    //---------
    //CalculateDome
    function CalculateDome(pos, objType, AltitudeType) {
    
        if (objType != 0 &&  objType != 18 && objType != 24)
            return true;
    
        try {
            ValidateInput();
            // Houre glass cursor
            SGWorld.Window.SetInputMode(1, abspath() + "/hourglass.cur", true);
    
            var position = pos.Copy(); // to make sure we do not change the position of an object
            // Make sure the point altitude is not lower than the Viewer Altitude the user provided
            var viewerAltitude = 1.0 * $("#ViewerAltitudeID").val();
            position.ChangeAltitudeType(3);
            var groundHeight = SGWorld.Terrain.GetGroundHeightInfo(position.X, position.Y, 1, true);
            position.Altitude = Math.max(groundHeight.Position.Altitude + viewerAltitude, position.Altitude);
         
            if (AnalyzePoints(position))
                DrawPoints(position);
            if (gLayer != null) {
                gLayer.Save();
            }
            Reset(false, false);
            gNumDome++;
        }
        catch (e) {alert(e.description);}
    
        return true;
    }
    
    //------------
    //  AnalyzePoints
    function AnalyzePoints(position) {
        var radius = $("#radiusID").val();
        var ElevationAngle = 1.0 * $("#ElevationAngleID").val();
        var pos = null;
        var pointIndex = 0;
        var lastVisiblePos;
    
        gType = $("#OutputTypeID").val();
    
        gVisibilityDistance = radius*20;
    
        // Create the Viewshed
        SGWorld.Window.ShowMessageBarText(SGLang.i18n("Text31") + " [" + gNumDome + "]", -1);
        gViewshed = SGWorld.Analysis.Create3DViewshed(position, 360, 180, radius*1.01, SGWorld.ProjectTree.HiddenGroupID, SGLang.i18n("Text25"));  // HiddenGroupID
        gViewshed.Quality = 2;
        gViewshed.SaveInFlyFile = false;
        SGWorld.Analysis.StartViewshedVisibilityQuery(gViewshed.ID);
    
        // calculate ray accuracy
        var raySteps = Math.floor((Math.log(radius) * 5) / Math.LN10) + 4;
    
        if ($("#AccuracyID").val() == 0) { // Normal
            yawStep = 2;
            pitchStep = 0.1;
        }
        else {  // high
            yawStep = 1;
            pitchStep = 0.05;
        }
    
        // dome or base
        if (gType == 0 || gType == 1 ) {   // Dome || Base 
    
            for (var yaw = 0; yaw < 360; yaw += yawStep ) {
                SGWorld.Window.ShowMessageBarText(SGLang.i18n("Text26") + " [" + gNumDome + "] " + Math.floor((yaw * 100) / (360)) + "%", -1);
                pointIndex = 0;
                var numVisiblePoint = 0;
                gLineArray[gLineIndex] = [];
                var bFoundVisible = true;
                pointIndex = AddPoint(gLineIndex, pointIndex, position); // add point at the center
                gYawArray[gLineIndex] = yaw;
    
                for (var pitch = ElevationAngle; pitch <= 90; pitch += pitchStep) {
                    pos = position.Move(radius, yaw, pitch);
                    var PointVisible = SGWorld.Analysis.QueryVisibilityDistance(pos); // Returns the radius of the visibility from the viewer to the position point
                    if (PointVisible >= radius ) {  // visible
                        if (numVisiblePoint > 1 && numVisiblePoint % 20 != 0)  // reduce number of point on the outer dome
                            pointIndex -= 1;
                        pointIndex = AddPoint(gLineIndex, pointIndex, pos);
                        if (bFoundVisible)
                            AddRing(gLineIndex, pos);
                        bFoundVisible = false;
                        if (gType == 1)
                            break;
                        numVisiblePoint++;
    
                    }
                    else {
                        pos = position.Move(PointVisible, yaw, pitch);
                        pointIndex = AddPoint(gLineIndex, pointIndex, pos);
                        numVisiblePoint = 0;
                    }
                }
                gLineIndex++;
            }  // yaw
        }  // if dome|base
        else if (gType == 2) {   // Skyline
            for (var yaw = 0; yaw < 360; yaw += yawStep/4 ) {
                SGWorld.Window.ShowMessageBarText(SGLang.i18n("Text26") + " [" + gNumDome + "] " + Math.floor((yaw * 100) / (360)) + "%", -1);
                var bAllVisible = true;
                for (var pitch = 90; pitch >= -45; pitch -= pitchStep ) {
                    pos = position.Move(radius, yaw, pitch);
                    var PointVisible = SGWorld.Analysis.QueryVisibilityDistance(pos); // Returns the radius of the visibility from the viewer to the position point
    
                    if (PointVisible < radius && PointVisible > -1) {  // not visible
                        bAllVisible = false;
                        pos = position.Move(PointVisible, yaw, pitch);
                        AddRing(gLineIndex, pos);
                        break;
                    }
                }  // pitch
    
                if (bAllVisible) {  // add point to the border line
                    AddRing(gLineIndex, pos);
                }
                gLineIndex++;
            }  // yaw
        }
      
        // close the ring
        var ringFirstPoint = SGWorld.Creator.CreatePosition(gRingArray[0], gRingArray[1], gRingArray[2], 0, 0, 0, 0, 0);
        AddRing(gLineIndex, ringFirstPoint);
    
        SGWorld.Analysis.EndVisibilityQuery();
    
        return true;
    }
    //------------
    //  AddPoint
    function AddPoint(line, point, position) {
        gLineArray[line][point * 3] = position.X;
        gLineArray[line][point * 3 + 1] = position.Altitude;
        gLineArray[line][point * 3 + 2] = position.Y;
        point++;
        return point;
    }
    
    //-------------
    // AddRing
    function AddRing(point, position) {
            gRingArray[point * 3] = position.X;
            gRingArray[point * 3 + 1] = position.Y;
            gRingArray[point * 3 + 2] = position.Altitude;
        }
    //------------
    //  DrawPoints
    function DrawPoints(position) {
        var radius = $("#radiusID").val();
        try {
            var a = SGWorld.ProjectTree.GetItemName(gMainGroup);
        }
        catch (e) { gMainGroup = SGWorld.ProjectTree.CreateGroup(SGLang.i18n("ToolName"), SGWorld.ProjectTree.RootID); }
    
        try {
            var layerName = $("#OutputTypeID option:selected").text()+" ["+gNumDome+"]";
            gGroup = SGWorld.ProjectTree.CreateGroup(layerName, gMainGroup);
    
            // Viewer label
            var labelStyle = SGWorld.Creator.CreateLabelStyle(0);
            var CenterLabel = SGWorld.Creator.CreateImageLabel(position, abspath() + "./img/image11.gif", labelStyle, gGroup, SGLang.i18n("Text11"));
            CenterLabel.Action.Code = 11;
            CenterLabel.Style.Scale = radius/100;
            CenterLabel.Style.IconColor.FromHTMLColor (gColorArray[(gNumDome-1) % 10]);
    
            // Dome
            if (gType == 0 || gType == 1    ) {  // dome || Base || elevation rings
                for (var i = 0; i < gLineIndex; i++) {
                    DrawObject(gLineArray[i], radius, gYawArray[i], gType);
                }
            }
    /******
            // Elevation Rings
            if (gType == 3) {  // dome or Base
                for (var alt = -10; alt < 100; alt++)
                    gElevationRingArray[alt] = [];
                for (var i = 0; i < gLineIndex; i++) {
                    for (var j = 0; j < gLineArray[i].length / 3 - 1; j++) {
                        var pointA = gLineArray[i][j * 3 + 1];
                        var pointB = gLineArray[i][(j + 1) * 3 + 1];
                        if (Math.floor(pointA / 100) != Math.floor(pointB / 100)) {
                            var positionA = SGWorld.Creator.CreatePosition(gLineArray[i][j * 3 ], gLineArray[i][j * 3 + 2], gLineArray[i][j * 3 + 1], 3, 0, 0, 0, 0);
                            var positionB = SGWorld.Creator.CreatePosition(gLineArray[i][(j + 1) * 3 ], gLineArray[i][(j + 1) * 3 + 2], gLineArray[i][(j + 1) * 3 + 1], 3, 0, 0, 0, 0);
                            var l = positionA.DistanceTo(positionB);
                            var l1 = (l * (Math.floor(pointB / 100) * 100 - pointA)) / (pointB - pointA);
                            var positionC = positionA.MoveToward(positionB, l1);
                            gElevationRingArray[Math.floor(pointB / 100)].push(positionC.X, positionC.Altitude, positionC.Y);
                        }
                    }
                }
                for (var alt = -10; alt < 100; alt++) {
                    if (gElevationRingArray[alt].length > 3)   // at least two points
                        DrawObject(gElevationRingArray[alt], radius, alt);
                }
            }
    ******/
            // Outer ring
            gRingObj = SGWorld.Creator.CreatePolylineFromArray(gRingArray, gColorArray[(gNumDome - 1) % 10], 3, gGroup, SGLang.i18n("Text21"));
            gRingObj.LineStyle.Width = -3;
            gRingObj.Visibility.MaxVisibilityDistance = radius * 50;
    
            gRingList.push(gRingObj);
            $("#ProfileID").show();
            $("#ProfileID").css('display','inline');
        }
        catch (e) { alert(e.message); Reset(false, false); }
    
        return true;
    }
    
    //---------
    // DrawObject
    function DrawObject(LineArray, range, Yaw, gType) {
        var node;
        var TEObj;
        var scale = range * 50;
        var ObjType; //   = "ImageLabel";
    
        if (gType == 0)
            ObjType =  "Polygon";
        else
            ObjType = "Polyline";
    
    
        SGWorld.Window.ShowMessageBarText(SGLang.i18n("Text27")+" ["+gNumDome+"]");
    
        if (gLayer == null) 
        {
            CreateGroupOrLayer(ObjType);
    
            // style the feature group
            if (featureLayerStyles[ObjType] != null) 
            {
                var result = featureLayerStyles[ObjType](scale);
                if (result === false)
                    return false;
            }
        }
    
        if (ObjType == "Polygon")
            gLayer.FeatureGroups.Polygon.CreateFeature(LineArray, range + ";" + Yaw);
        if (ObjType == "Polyline")
            gLayer.FeatureGroups.Polyline.CreateFeature(LineArray, range + ";" + Yaw);
    
        return true;
    
    }
    //----------
    //    CreateGroupOrLayer
    function CreateGroupOrLayer(ObjType) {
    
        var radius = $("#radiusID").val();
    
        if (gLayer == null) {
            var postfix = new Date().getTime();
            var layerName = $("#OutputTypeID option:selected").text() + postfix;
            if (ObjType == "Polygon")
                gLayer = SGWorld.Creator.CreateNewFeatureLayer(layerName, LayerGeometryType.LGT_POLYGON, "FileName=ThreatDome" + postfix + ".shp;TEPlugName=OGR;", gGroup);
            if (ObjType == "Polyline")
                gLayer = SGWorld.Creator.CreateNewFeatureLayer(layerName, LayerGeometryType.LGT_POLYLINE, "FileName=ThreatDome" + postfix + ".shp;TEPlugName=OGR;", gGroup);
    
            //  gLayer = SGWorld.Creator.CreateNewFeatureLayer(layerName, LayerGeometryType.LGT_POINT, "FileName=ThreatDome" + postfix + ".shp;TEPlugName=OGR;", gGroup);
                gLayer.Streaming = true;
                gLayer.BlockWidth = radius /4;
                gLayer.Refresh();
                ///gLayer.DataSourceInfo.Attributes.CreateAttribute(SGLang.i18n("Text29"), 1, 20, 0);
                gLayer.DataSourceInfo.Attributes.CreateAttribute(SGLang.i18n("Text30"), 1, 20, 0);
                gLayer.DataSourceInfo.Attributes.CreateAttribute(SGLang.i18n("Text33"), 2, 20, 1);
                gLayer.DataSourceInfo.Attributes.ImportAll = true;
                gLayer.Visibility.MaxVisibilityDistance = gVisibilityDistance;
    
            }  
     
    }
    var featureLayerStyles = {
    
        "Polygon": function (size) {
            gLayer.FeatureGroups.Polygon.SetProperty("Line Color", "#ffffff");
            gLayer.FeatureGroups.Polygon.SetProperty("Line Opacity", 0.5);
            gLayer.FeatureGroups.Polygon.SetProperty("Fill Opacity", 0);
            gLayer.FeatureGroups.Polygon.SetProperty("Altitude Method", 11);
            gLayer.Visibility.MaxVisibilityDistance = size;
        },
        "Polyline": function (size) {
            gLayer.FeatureGroups.Polyline.SetProperty("Line Color", "#ffffff");
            gLayer.FeatureGroups.Polyline.SetProperty("Line Opacity", 0.5);
            gLayer.FeatureGroups.Polyline.SetProperty("Altitude Method", 11);
            gLayer.Visibility.MaxVisibilityDistance = size;
        }
    }
    //---------------
    // TypeChanged
    function TypeChanged() {
        gType = $("#OutputTypeID").val();
        if (gType == 2) // Skyline
            $("#ElevationAngleID").attr('disabled','disabled');   
        else
            $("#ElevationAngleID").attr('disabled', '');   
        }
    //---------------
    // ValidateInput
    function ValidateInput() {
        var radius = $("#radiusID").val();
        radius = Math.max(radius, 0.1);
        $("#radiusID").val(radius);
    
        var ElevationAngle = $("#ElevationAngleID").val();
        ElevationAngle = Math.max(Math.min(ElevationAngle, 80), -90);
        $("#ElevationAngleID").val(ElevationAngle);
        return;
    }
    //--------------
    // ShoeProfile
    function ShowProfile() {
        var objList = "";
    
       if (gRingList.length == 0)
            return;
    
       try {
            for (var i =0 ; i<gRingList.length ; i++)
                objList += "&ObjID"+i+"=" + gRingList[i].ID ;
        }
        catch (e) { alert(SGLang.i18n("Text37")) ; return; }
    
        // Remove previos popup
        SGWorld.Window.RemovePopupByCaption(gPopupCaption);
    
        var a = new Date();
        gPopupCaption = SGLang.i18n("Text19") + Date().toString();
        var url = abspath() + "/../TerrainProfile/TerrainProfilePopup.html?Type=3" + objList + "&Density=1&Compare=0&Caption=" + gPopupCaption;
        var popupMsg = SGWorld.Creator.CreatePopupMessage(gPopupCaption, url, 1, -1000, 100, 100, -1);
    
        popupMsg.Flags = 2 + 32;
        SGWorld.Window.ShowPopup(popupMsg);
    
    }
    //--------------
    // CheckNumberEx
    function CheckNumberEx(field, defVal, MinNum, MaxNum) {
        try {
            field.value = validateNumber(field.value);
    
            if (field.value < MinNum)
                field.value = MinNum;
            if (field.value > MaxNum)
                field.value = MaxNum;
        }
        catch (e) { field.value = defVal }
    }
    
    </script>
    
    </body>
    </html>
    
    
    <!--Sig:00000040mkMXNLI#5a52TFY#E1faqOyI2#t2mlbqFNlnWR51q3LTfVtdo4QjqwI2eWUFDXYNAnXSak1iWIC9XwWBaOUdMdJJ-->
  • 相关阅读:
    datatable linq查询操作filed用法
    C# asp.net 中sql like in 参数化
    c#.net全站防止SQL注入类的代码
    js面向对象编程:if中可以使用那些作为判断条件呢?
    HTTP Method 详细解读(`GET` `HEAD` `POST` `OPTIONS` `PUT` `DELETE` `TRACE` `CONNECT`)--转
    浅析HTTP代理原理--转
    细说Cookie--转
    HTTP协议7之Cookie--转
    HTTP协议6之状态码--转
    HTTP协议5之代理--转
  • 原文地址:https://www.cnblogs.com/yitianhe/p/4747616.html
Copyright © 2011-2022 走看看