SkylineGlobeはどのように二次開発して3 DモデルのBBOXを取得してTint属性を設定します

4378 ワード

テストモデルタイプはTerrainModelとFeatureの2種類を選択し、テストコードは以下の通りである.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title> TerrainModel </title>
    <script type="text/javascript">
        function StartF() {
            try {
                var sg = CreateSGObj();
                sg.AttachEvent("OnLButtonDown", OnLButtonDown);
            }
            catch (e) {
                alert(e);
            }
        }

        function EndF() {
            var sg = CreateSGObj();
            sg.DetachEvent("OnLButtonDown", OnLButtonDown);
        }

        function OnLButtonDown(Flags, X, Y) {
            try
            {
                var sg = CreateSGObj();
                var iwp = sg.Window.PixelToWorld(X, Y, 1 + 8192);
                if (iwp != null) {
                    alert(iwp.ObjectID);
                    var oModel = sg.Creator.GetObject(iwp.ObjectID);
                    var oBBox = null;
                    if (oModel.ObjectType == 17) // TerrainModel
                    {
                        oModel.Terrain.Tint.abgrColor = 0x66FF0000;
                        oBBox = oModel.Terrain.BBox;
                    }
                    else if (oModel.ObjectType == 33) // Feature 
                    {
                        oModel.Tint.abgrColor = 0x66FF0000;
                        //alert(oModel.Geometry.Wks.ExportToWKT());
                        var statisticsgPolyObj = sg.Creator.CreatePolygon(oModel.Geometry, sg.Creator.CreateColor(255, 0, 0, 255), sg.Creator.CreateColor(0, 255, 0, 26), 0, "", "temp");
                        //oBBox = oModel.BBox; // ?
                    }
                    else {

                    }
                    if (oBBox != null) {
                        var myGeometry = sg.Creator.GeometryCreator.CreateLinearRingGeometry([oBBox.MaxX, oBBox.MaxY, 0, oBBox.MaxX, oBBox.MinY, 0, oBBox.MinX, oBBox.MinY, 0, oBBox.MinX, oBBox.MaxY, 0])
                        var statisticsgPolyObj = sg.Creator.CreatePolygon(myGeometry, sg.Creator.CreateColor(255, 0, 0, 255), sg.Creator.CreateColor(0, 255, 0, 26), 0, "", "temp");
                    }
                }
            }
            catch (e)
            {
                alert(e);
            }
            return false;
        }
        
        //------------------------------------------------------------
        //  sgworld     2015.06.09. TEPro6.6
        //------------------------------------------------------------
        function CreateSGObj() {
            var obj = $("sgworld");
            if (obj == null) {
                obj = document.createElement('object');
                document.body.appendChild(obj);
                obj.name = "sgworld";
                obj.id = "sgworld";
                obj.classid = "CLSID:3A4F9199-65a8-11d5-85c1-0001023952c1";
            }
            return obj;
        }        
        function $(id) {
            return window.document.getElementById(id);
        }
    </script>
</head>
<body>
    <input id="Button1" type="button" value=" " onclick="StartF()" />
    <input id="Button2" type="button" value=" " onclick="EndF()" />
    <div id="res"></div>
    <object id="TerraExplorer3DWindow" classid="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1" style="width:500px;height:400px;"></object>
    <object id="TerraExplorerInformationWindow" classid="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1" style="width:300px;height:400px;"></object>
</body>
</html>