예제 #1
0
        private void ClientOnComputeFieldOfViewCompleted(object sender, ComputeFieldOfViewAsImageCompletedEventArgs e) {
            if (e.Error != null) {
                Logger.Log("Field of View", "Error showing field of view result", e.Error.Message, Logger.Level.Error, true);
                return;
            }
            var result = e.Result;
            if (result == null || result.ByteBuffer == null) return;

            var image = ConvertToBitmapImage(result);
            Execute.OnUIThread(() => { Image.Source = image; });

            var env = webMercator.FromGeographic(new Envelope(e.Result.BoundingBox.MinimumLongitude, e.Result.BoundingBox.MinimumLatitude, e.Result.BoundingBox.MaximumLongitude, e.Result.BoundingBox.MaximumLatitude)) as Envelope;
            ElementLayer.SetEnvelope(Image, env);
        }
예제 #2
0
파일: FoVPoi.cs 프로젝트: TNOCS/csTouch
        ///// <summary>
        ///// Convert to Radians.
        ///// </summary>      
        //private static double ToRadian(double val)
        //{
        //    return (Math.PI / 180) * val;
        //}

        //private static double ToDegrees(double val)
        //{
        //    return (180 / Math.PI) * val;
        //}

        //private const double EarthRadius = 6378137.0;

        ///// <summary>
        ///// Calculates the end-point from a given source at a given range (meters) and bearing (degrees).
        ///// This methods uses simple geometry equations to calculate the end-point.
        ///// </summary>
        ///// <param name="source">Point of origin</param>
        ///// <param name="range">Range in meters</param>
        ///// <param name="bearing">Bearing in degrees</param>
        ///// <returns>End-point from the source given the desired range and bearing.</returns>
        //public static Point CalculateDerivedPosition(Point source, double range, double bearing)
        //{
        //    var latA = ToRadian(source.Y);
        //    var lonA = ToRadian(source.X);
        //    var angularDistance = range / EarthRadius;
        //    var trueCourse = ToRadian(bearing);

        //    var lat = Math.Asin(Math.Sin(latA) * Math.Cos(angularDistance) + Math.Cos(latA) * Math.Sin(angularDistance) * Math.Cos(trueCourse));
        //    var dlon = Math.Atan2(Math.Sin(trueCourse) * Math.Sin(angularDistance) * Math.Cos(latA), Math.Cos(angularDistance) - Math.Sin(latA) * Math.Sin(lat));
        //    var lon = ((lonA + dlon + Math.PI) % (Math.PI * 2)) - Math.PI;

        //    return new Point(ToDegrees(lon), ToDegrees(lat));
        //}

        private void ClientOnComputeFieldOfViewAsImageCompleted(object sender, ComputeFieldOfViewAsImageCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                AppStateSettings.Instance.TriggerNotification("Error generating FoV", "FoV Error", Brushes.Red);
                return;
            }
            var result = e.Result;
            if (result == null || result.ByteBuffer == null) return;

            var bitmapImage = ConvertToBitmapImage(result);
            var env = webMercator.FromGeographic(new Envelope(e.Result.BoundingBox.MinimumLongitude, e.Result.BoundingBox.MinimumLatitude, e.Result.BoundingBox.MaximumLongitude, e.Result.BoundingBox.MaximumLatitude)) as Envelope;
            Execute.OnUIThread(() =>
            {
                image.Source = bitmapImage;
                ElementLayer.SetEnvelope(image, env);
            });
        }