Creating a Circle

This example demonstrates how to create a circle, set its properties, and then fly to it. This example uses the ICreator61 (CreatePosition, CreateColor, CreateCircle, CreateMessage), INavigate61 (FlyTo), IPosition61 (Copy, Pitch), IColor61, ITerrainRegularPolygon61 (Radius, Message), IFillStyle61 (Color) and ITerraExplorerMessage61 (ID) interfaces.

 

function CreateCircle()

        {

            try

            {

                //

                // B.  Create position for circle

                //

                // B1. Set position input parameters (San Fransico shore)

                var dXCoord = -122.49460;

                var dYCoord = 37.78816;

                var dAltitude = 100.0;

                var eAltitudeTypeCode = 0; //AltitudeTypeCode.ATC_TERRAIN_RELATIVE;

                var dYaw = 0.0;

                var dPitch = 0.0;

                var dRoll = 0.0;

                var dDistance = 5000;

 

                // B2. Create Position

                var cPos = sgworld.Creator.CreatePosition(dXCoord, dYCoord, dAltitude, eAltitudeTypeCode, dYaw, dPitch, dRoll, dDistance);

 

                //

                // C. create FillColor for circle

                //

                {

                    // C1. Set fill color input params - RGB and Alpha

                    var nRed = 0;

                    var nGreen = 255;

                    var nBlue = 0;

                    var nAlpha = 0x7F; // 50% opacity

 

                    // C2. Create fill color

                    var cFillColor = sgworld.Creator.CreateColor(nRed, nGreen, nBlue, nAlpha);

                }

 

                //

                // D. Create circle using created position and fill color (for line color use Abgr uint value)

                //

                {

                    // D1. Set circle input params

                    var nLineColor = 0xFFFF0000;   // Abgr value - Solid blue

                    var dCircleRadius = 200;     // in meters

 

                    // D2. Create circle

                    var cCircle = sgworld.Creator.CreateCircle(cPos, dCircleRadius, nLineColor, cFillColor, 0, "Circle");

                }

 

                //

                // E. Get and change circle properties

                //

                {

                    // E1. Get & Set circle radius

                    var dNewCircleRadius = 300;

                    var dCurrentCircleRadius = cCircle.Radius; // Get circle radius

                    cCircle.Radius = dNewCircleRadius;            // Set new circle radius 

 

                    // E2. Get fill style and change its properties

                    var nRGB_Red = 0xFF0000;  // uing Rgb - Red color

                    var dAlpha = 0.2;       // 80% transparent

                    var cFillStyle = cCircle.FillStyle;

                    cFillStyle.Color.FromRGBColor(nRGB_Red);

                    cFillStyle.Color.SetAlpha(dAlpha);

                }

 

                //

                // F. Add Message to created circle

                //

                {

                    // F1. Set message input parameters

                    var eMsgTarget = 5; //MsgTargetPosition.MTP_POPUP;

                    var tMessage = "Hello Circle";

                    var eMsgType = 0; //MsgType.TYPE_TEXT;

                    var bIsBringToFront = true;

 

                    // F2. Create message and add to circle

                    var cMessage = sgworld.Creator.CreateMessage(eMsgTarget, tMessage, eMsgType, bIsBringToFront);

                    cCircle.Message.MessageID = cMessage.ID;

                }

 

                //

                // G. FlyTo created circle

                //

                {

                    var cFlyToPos = cPos.Copy();

                    cFlyToPos.Pitch = -89.0; // Set camera to look downward on circle

                    sgworld.Navigate.FlyTo(cFlyToPos);

                }

            }

            catch (e)

            {

                alert("Unexpected error: " + e.description);

            }

        }