Exemplo n.º 1
0
        public static double GetMapViewportScale(this XamGeographicMap geoMap)
        {
            //var mapSizeScale = System.Math.Min(geoMap.ViewportRect.Width, geoMap.ViewportRect.Height);
            var mapSizeScale = System.Math.Max(geoMap.ViewportRect.Width, geoMap.ViewportRect.Height);

            return(mapSizeScale);
        }
Exemplo n.º 2
0
        public static void EnableSeriesMouseDoubleClick(this XamGeographicMap geoMap, bool isEnabled = true)
        {
            IsSeriesMouseDoubleClickTracking = isEnabled;

            if (IsSeriesMouseDoubleClickTracking)
            {
                if (geoMap != null)
                {
                    geoMap.SeriesMouseLeftButtonDown += OnSeriesMouseLeftButtomDown;
                }
                if (geoMap != null)
                {
                    geoMap.SeriesMouseLeftButtonUp += OnSeriesMouseLeftButtonUp;
                }
                //if (geoMap != null) geoMap.SeriesMouseMove += OnSeriesMouseMove;
                SeriesMouseDoubleClickTimer.Start();
            }
            else
            {
                SeriesMouseDoubleClickTimer.Stop();
                if (geoMap != null)
                {
                    geoMap.SeriesMouseLeftButtonDown -= OnSeriesMouseLeftButtomDown;
                }
                if (geoMap != null)
                {
                    geoMap.SeriesMouseLeftButtonUp -= OnSeriesMouseLeftButtonUp;
                }
                //if (geoMap != null) geoMap.SeriesMouseMove -= OnSeriesMouseMove;
            }
        }
Exemplo n.º 3
0
        public static double GetMapZoomScale(this XamGeographicMap geoMap)
        {
            //var mapZoomScale = System.Math.Min(geoMap.ActualWindowScaleVertical, geoMap.ActualWindowScaleHorizontal);
            var mapZoomScale = geoMap.ActualWindowScale;

            return(mapZoomScale);
        }
Exemplo n.º 4
0
        public static GeoImagerySource GetGeoImagerySource(this XamGeographicMap geoMap)
        {
            var geoImagerySource = GeoImagerySource.OpenStreetMapImagery;

            var geoMapImagery = geoMap.BackgroundContent as GeographicMapImagery;

            if (geoMapImagery is MapQuestStreetImagery || geoMapImagery is MapQuestSatelliteImagery)
            {
                geoImagerySource = GeoImagerySource.MapQuestImagery;
            }
            else if (geoMapImagery is BingMapsMapImagery)
            {
                geoImagerySource = GeoImagerySource.BingMapsImagery;
            }
            else if (geoMapImagery is ArcGISOnlineMapImagery)
            {
                geoImagerySource = GeoImagerySource.EsriMapImagery;
            }
            else //if (geoMapImagery is OpenStreetMapImagery)
            {
                geoImagerySource = GeoImagerySource.OpenStreetMapImagery;
            }

            return(geoImagerySource);
        }
Exemplo n.º 5
0
        public static double GetScaledLatitude(this XamGeographicMap geoMap, double geoLatitude)
        {
            var yParams     = geoMap.GetLatitudeScaler();
            var scaledValue = geoMap.YAxis.GetScaledValue(geoLatitude, yParams);

            return(scaledValue);
        }
Exemplo n.º 6
0
 public static void EnableMouseWheelZoomOnMapHover(this XamGeographicMap geoMap)
 {
     geoMap.MouseEnter += (o, e) =>
     {
         geoMap.Focus();
     };
 }
Exemplo n.º 7
0
        public static ScalerParams GetLatitudeScaler(this XamGeographicMap geoMap)
        {
            var yaxis   = geoMap.YAxis;
            var yParams = new ScalerParams(_unitRect, geoMap.ViewportRect, yaxis.IsInverted);

            yParams.EffectiveViewportRect = geoMap.EffectiveViewport;
            return(yParams);
        }
Exemplo n.º 8
0
        public static ScalerParams GetLongitudeScaler(this XamGeographicMap geoMap)
        {
            var xaxis   = geoMap.XAxis;
            var xParams = new ScalerParams(_unitRect, geoMap.ViewportRect, xaxis.IsInverted);

            xParams.EffectiveViewportRect = geoMap.EffectiveViewport;
            return(xParams);
        }
Exemplo n.º 9
0
 internal static void LoadMapImagerySettings(this XamGeographicMap geoMap)
 {
     if (geoMap.BackgroundContent is GeographicMapImagery)
     {
         (geoMap.BackgroundContent as GeographicMapImagery).LoadMapImagerySettings();
     }
     // MapImagerySettings = new GeoMapImagerySettings(geoMap.BackgroundContent as GeographicMapImagery);
 }
Exemplo n.º 10
0
        public static Point GetWindowCenterPoint(this XamGeographicMap geoMap)
        {
            var    rect = geoMap.WindowRect;
            double x    = rect.X + (rect.Width / 2);
            double y    = rect.Y + (rect.Height / 2);

            return(rect.Center()); // new Point(x, y);
        }
Exemplo n.º 11
0
        /// <summary>
        /// Navigates the <see cref="XamGeographicMap"/> in South direction by specified pan factor - percentage of the current window's height
        /// </summary>
        public static void NavigateSouth(this XamGeographicMap geoMap, double panScaleFactor = GeoMapGlobals.MapPanScaleFactor)
        {
            Rect   window   = geoMap.WindowRect;
            double panScale = window.Width * panScaleFactor;

            window.Y = System.Math.Min(1.0 - window.Height, window.Y + panScale);
            geoMap.NavigateTo(window);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Navigates the <see cref="XamGeographicMap"/> in North direction by specified pan factor - percentage of the current window's height
        /// </summary>
        public static void NavigateNorth(this XamGeographicMap geoMap, double panScaleFactor = GeoMapGlobals.MapPanScaleFactor)
        {
            Rect   window   = geoMap.WindowRect;
            double panScale = window.Width * panScaleFactor;

            window.Y = System.Math.Max(0.0, window.Y - panScale);
            geoMap.NavigateTo(window);
        }
Exemplo n.º 13
0
        public static void ZoomMapToRegion(this XamGeographicMap geoMap, GeoRect region, TimeSpan zoomDuration)
        {
            Rect currentWindowRect = geoMap.WindowRect;
            //GeoRegion geodeticGeoRegion = region;
            var winRect = geoMap.GetZoomFromGeographic(region.ToRect());

            //GeoRegion cartesianGeoRegion = ProjectMapRegion(geodeticGeoRegion, map);
            //MapWindowRect = cartesianGeoRegion.ToRect();
            var dTL = geoMap.WindowRect.TopLeft().DistanceVector(winRect.TopLeft());
            var dTR = geoMap.WindowRect.TopRight().DistanceVector(winRect.TopRight());
            var dBR = geoMap.WindowRect.BottomRight().DistanceVector(winRect.BottomRight());
            var dBL = geoMap.WindowRect.BottomLeft().DistanceVector(winRect.BottomLeft());


            var StartTime = DateTime.MinValue;

            //var zoomInterval = zoomDuration.TotalMilliseconds / 2000.0;
            var zoomInterval = zoomDuration.TotalMilliseconds / 2000.0;

            var counter = 0;
            var timer   = new DispatcherTimer {
                Interval = TimeSpan.FromMilliseconds(10)
            };

            timer.Tick += (o, e) =>
            {
                if (StartTime == DateTime.MinValue)
                {
                    StartTime = DateTime.Now;
                }
                double tick     = (DateTime.Now - StartTime).Ticks / TimeSpan.TicksPerMillisecond;
                double duration = zoomDuration.TotalMilliseconds;
                var    factor   = 50.0;
                //TODO add logic for smooth transition between map's window Rect
                //double lin = duration > 1.0 ? MathUtil.Clamp(tick / duration, 0.0, 1.0) : 1.0;
                //var tLog = Math.Log(1.0 + factor * Math.E / (Math.E - 1.0));
                //var trig = 0.5 - 0.5 * Math.Cos(Math.PI * factor);


                //System.Diagnostics.Debug.WriteLine("  log " + tLog + "  tri " + trig);

                var top    = geoMap.WindowRect.Top + (dTL.Y / factor);
                var left   = geoMap.WindowRect.Left + (dTL.X / factor);
                var bottom = geoMap.WindowRect.Bottom + (dBR.Y / factor);
                var right  = geoMap.WindowRect.Right + (dBR.X / factor);

                counter++;
                var rect = new Rect(new Point(left, top), new Point(right, bottom));
                if (counter > factor || winRect.Contains(rect))
                {
                    ((DispatcherTimer)o).Stop();
                }

                geoMap.WindowRect = rect;
            };
            timer.Start();
        }
Exemplo n.º 14
0
        public static Point GetScaledLocation(this XamGeographicMap geoMap, GeoLocation geoLocation)
        {
            // init appropriate axis scaler parameters
            var x = geoMap.GetScaledLongitude(geoLocation.Longitude);
            var y = geoMap.GetScaledLongitude(geoLocation.Latitude);
            var scaledLocation = new Point(x, y);

            return(scaledLocation);
        }
Exemplo n.º 15
0
        /// <summary>
        /// Navigates the <see cref="XamGeographicMap"/> to specified window view rectangle
        /// </summary>
        public static void NavigateTo(this XamGeographicMap geoMap, Rect winRect)
        {
            if (geoMap == null)
            {
                return;
            }

            geoMap.WindowRect = winRect;
        }
Exemplo n.º 16
0
        public void InitializeMap(XamGeographicMap map)
        {
            if (map == null)
            {
                throw new MapCartesianException("GeographicMap cannot be null when initializing MapCartesianProjection");
            }

            GeographicMap = map;
        }
Exemplo n.º 17
0
        public static Vector GetMapDistance(this XamGeographicMap geoMap, Point geoPoint1, Point geoPoint2)
        {
            var mapPoint1 = geoMap.GetMapPosition(geoPoint1);
            var mapPoint2 = geoMap.GetMapPosition(geoPoint2);

            var distanceX = System.Math.Abs(mapPoint1.X - mapPoint2.X);
            var distanceY = System.Math.Abs(mapPoint1.Y - mapPoint2.Y);

            return(new Vector(distanceX, distanceY));
        }
Exemplo n.º 18
0
        /// <summary>
        /// Loads geo-imagery from specified imagery view and preserves settings of XamGeographicMap's BackgroundContent
        /// <remarks>Supported imagery views: <see cref="OpenStreetMapImageryView"/>, <see cref="BingMapsImageryView"/>,
        /// <see cref="EsriMapImageryView"/>, and <see cref="MapQuestImageryView"/></remarks>
        /// </summary>
        public static void LoadGeoImagery(this XamGeographicMap geoMap, GeoImageryViewModel imageryViewModel)
        {
            if (geoMap == null)
            {
                DebugManager.LogWarning("GeoMapImager cannot load geo-imagery when XamGeographicMap is null"); return;
            }
            GeoMapImager.GeoMap = geoMap;

            geoMap.SaveMapImagerySettings();
            geoMap.BackgroundContent = imageryViewModel.GetGeographicMapImagery();
            geoMap.LoadMapImagerySettings();
        }
Exemplo n.º 19
0
        ///// <summary>
        ///// Loads geo-imagery from specified imagery view and preserves settings of GeographicTileSeries' TileImagery
        ///// <remarks>Supported imagery views: <see cref="OpenStreetMapImageryView"/>, <see cref="BingMapsImageryView"/>,
        ///// <see cref="EsriMapImageryView"/>, and <see cref="MapQuestImageryView"/></remarks>
        ///// </summary>
        //public static void LoadGeoImagery(this GeographicTileSeries geoTileSeries, GeoImageryViewModel imageryViewModel)
        //{
        //    if (geoTileSeries == null)
        //    {
        //        DebugManager.LogWarning("GeoMapImager cannot load geo-imagery when GeographicTileSeries is null"); return;
        //    }

        //    geoTileSeries.TileImagery.SaveMapImagerySettings();
        //    geoTileSeries.TileImagery = imageryViewModel.GetGeographicMapImagery();
        //    geoTileSeries.TileImagery.LoadMapImagerySettings();
        //}
        //private static bool IsFirstKeyReservedWarning = true;
        public static void LoadGeoImagery22(this XamGeographicMap geoMap, GeoImageryViewModel imageryViewModel)
        {
            if (geoMap == null)
            {
                DebugManager.LogWarning("22 XamGeographicMap cannot be null"); return;
            }

            GeoMapImager.GeoMap = geoMap;
            if (geoMap.BackgroundContent is GeographicMapImagery)
            {
                (geoMap.BackgroundContent as GeographicMapImagery).SaveMapImagerySettings();
            }
        }
Exemplo n.º 20
0
 public void InitializeMap(XamGeographicMap geoMap)
 {
     this.Map = geoMap;
     this.Map.BackgroundContent.Opacity = 0;
     this.Map.IncreaseImageryZoomMaxLevel();
     this.Map.NavigateTo(GeoRegions.WorldNonAntarcticRegion);
     this.Map.Series.Clear();
     foreach (var mapLayer in MapLayers)
     {
         AddGeoMapLayer(mapLayer);
     }
     this.IsMapInitialized = true;
 }
Exemplo n.º 21
0
        /// <summary>
        /// Navigates the <see cref="XamGeographicMap"/> to specified geographic region of the world
        /// </summary>
        /// <param name="geoMap">an instance of XamGeographicMap</param>
        /// <param name="geoRegion">a geographic region of the world</param>
        public static void NavigateTo(this XamGeographicMap geoMap, GeoRegion geoRegion)
        {
            var windowRect = geoMap.GetZoomFromGeographic(geoRegion.NorthWest.ToPoint(), geoRegion.SouthEast.ToPoint());

            // conversion of geographic region to window rect works when XamGeographicMap view was initialized
            if (windowRect == new Rect(0, 0, 1, 1))
            {
                geoMap.GridAreaRectChanged += (o, e) =>
                {
                    windowRect        = geoMap.GetZoomFromGeographic(geoRegion.NorthWest.ToPoint(), geoRegion.SouthEast.ToPoint());
                    geoMap.WindowRect = windowRect;
                };
            }
            else
            {
                geoMap.WindowRect = windowRect;
            }
        }
Exemplo n.º 22
0
        /// <summary>
        /// Zoom in the <see cref="XamGeographicMap"/> by specified zoom factor - percentage of the current window view rectangle
        /// </summary>
        public static void ZoomIn(this XamGeographicMap geoMap, double zoomScaleFactor = GeoMapGlobals.MapZoomScaleFactor)
        {
            Rect   window     = geoMap.WindowRect;
            double zoomScaleH = window.Height * zoomScaleFactor;
            double zoomScaleW = window.Width * zoomScaleFactor;

            //const double zoomWindowMin = 0.00005;

            window.Width  = System.Math.Max(GeoMapGlobals.MapWindowMinZoom, window.Width - (2 * zoomScaleW));
            window.Height = System.Math.Max(GeoMapGlobals.MapWindowMinZoom, window.Height - (2 * zoomScaleH));

            //if (window.Width > GeoMapAdapter.MapWindowMinZoom)
            window.X = System.Math.Min(1.0, window.X + zoomScaleW);
            //if (window.Height > GeoMapAdapter.MapWindowMinZoom)
            window.Y = System.Math.Min(1.0, window.Y + zoomScaleH);

            geoMap.NavigateTo(window);
        }
Exemplo n.º 23
0
        /// <summary>
        /// Zoom out the <see cref="XamGeographicMap"/> by specified zoom factor - percentage of the current window view rectangle
        /// </summary>
        public static void ZoomOut(this XamGeographicMap geoMap, double zoomScaleFactor = GeoMapGlobals.MapZoomScaleFactor)
        {
            Rect   window     = geoMap.WindowRect;
            double zoomScaleH = window.Height * zoomScaleFactor;
            double zoomScaleW = window.Width * zoomScaleFactor;

            //const double zoomWindowMax = 1.0;

            window.Width  = System.Math.Min(GeoMapGlobals.MapWindowMaxZoom, window.Width + (2 * zoomScaleW));
            window.Height = System.Math.Min(GeoMapGlobals.MapWindowMaxZoom, window.Height + (2 * zoomScaleH));

            //if (window.Width < GeoMapAdapter.MapWindowMaxZoo)
            window.X = System.Math.Max(0.0, window.X - zoomScaleW);
            //if (window.Height < GeoMapAdapter.MapWindowMaxZoo)
            window.Y = System.Math.Max(0.0, window.Y - zoomScaleH);

            geoMap.NavigateTo(window);
        }
Exemplo n.º 24
0
        //TODO use GeoCalc
        //public static Vector GetGeoDistance(this XamGeographicMap geoMap, Point mousePoint1, Point mousePoint2)
        //{
        //    var geoPoint1 = geoMap.GetGeoPoint(mousePoint1);
        //    var geoPoint2 = geoMap.GetGeoPoint(mousePoint2);

        //    var distanceX = System.Math.Abs(geoPoint1.X - geoPoint2.X);
        //    var distanceY = System.Math.Abs(geoPoint1.Y - geoPoint2.Y);

        //    return new Vector(distanceX, distanceY);
        //}
        //TODO cleanup
        //public static double GetGeoDistanceX(this XamGeographicMap geoMap, Point mousePoint1, Point mousePoint2)
        //{
        //    return geoMap.GetGeoDistance(mousePoint1, mousePoint2).X;
        //}
        //public static double GetGeoDistanceY(this XamGeographicMap geoMap, Point mousePoint1, Point mousePoint2)
        //{
        //    return geoMap.GetGeoDistance(mousePoint1, mousePoint2).Y;
        //}
        //public static double GetGeoDistanceX(this XamGeographicMap geoMap, double mouseX1, double mouseX2)
        //{
        //    return geoMap.GetGeoDistanceX(new Point(mouseX1, 0), new Point(mouseX2, 0));
        //}
        //public static double GetGeoDistanceY(this XamGeographicMap geoMap, double mouseY1, double mouseY2)
        //{
        //    return geoMap.GetGeoDistanceY(new Point(0, mouseY1), new Point(0, mouseY2));
        //}
        #endregion

        #region Calculation Methods for Map Postions
        public static Point GetMapPosition(this XamGeographicMap geoMap, Point geoPoint)
        {
            return(geoMap.GetWindowPoint(geoPoint));

            //var xAxis = geoMap.XAxis;
            //var yAxis = geoMap.YAxis;

            //var viewport = new Rect(0, 0, geoMap.ActualWidth, geoMap.ActualHeight);
            //var window = geoMap.WindowRect;

            //bool isInverted = xAxis.IsInverted;
            //var param = new ScalerParams(window, viewport, isInverted);
            //param.EffectiveViewportRect = geoMap.EffectiveViewport;
            //var longitude = xAxis.GetScaledValue(geoPoint.X, param);

            //isInverted = yAxis.IsInverted;
            //param = new ScalerParams(window, viewport, isInverted);
            //param.EffectiveViewportRect = geoMap.EffectiveViewport; //added
            //var latitude = yAxis.GetScaledValue(geoPoint.Y, param);

            //return new Point(longitude, latitude);
        }
Exemplo n.º 25
0
        /// <summary>
        /// Calculates geographic location of mouse cursor over the XamGeographicMap
        /// </summary>
        public static GeoLocation GetGeoLocation(this XamGeographicMap geoMap, Point mousePosition)
        {
            var geoPoint = geoMap.GetGeographicPoint(mousePosition);

            return(new GeoLocation(geoPoint));

            //var xAxis = geoMap.XAxis;
            //var yAxis = geoMap.YAxis;

            //var viewport = new Rect(0, 0, geoMap.ActualWidth, geoMap.ActualHeight);
            //var window = geoMap.WindowRect;

            //bool isInverted = xAxis.IsInverted;
            //var param = new ScalerParams(window, viewport, isInverted);
            //param.EffectiveViewportRect = geoMap.EffectiveViewport;
            //var longitude = xAxis.GetUnscaledValue(mousePosition.X, param);

            //isInverted = yAxis.IsInverted;
            //param = new ScalerParams(window, viewport, isInverted);
            //var latitude = yAxis.GetUnscaledValue(mousePosition.Y, param);

            //return new GeoLocation(longitude, latitude);
        }
Exemplo n.º 26
0
 /// <summary>
 /// Loads geo-imagery from specified imagery source
 /// </summary>
 public static void LoadGeoImagery(this XamGeographicMap geoMap, GeoImagerySource imagerySource)
 {
     if (imagerySource == GeoImagerySource.BingMapsImagery)
     {
         geoMap.LoadGeoImagery(IGExtensions.Common.Maps.Imagery.BingMapsImageryStyle.StreetMapStyle);
     }
     else if (imagerySource == GeoImagerySource.MapQuestImagery)
     {
         geoMap.LoadGeoImagery(MapQuestImageryStyle.StreetMapStyle);
     }
     else if (imagerySource == GeoImagerySource.EsriMapImagery)
     {
         geoMap.LoadGeoImagery(EsriMapImageryStyle.WorldTopographicMap);
     }
     else if (imagerySource == GeoImagerySource.OpenStreetMapImagery)
     {
         geoMap.LoadGeoImagery(new OpenStreetMapImageryView());
     }
     else
     {
         System.Diagnostics.Debug.WriteLine("WARNING: Imagery source " + imagerySource + " is not supported by IGExtensions library.");
     }
 }
Exemplo n.º 27
0
        public static GeoImageryViewModel GetGeoImageryViewModel(this XamGeographicMap geoMap)
        {
            var geoImagerySource = geoMap.GetGeoImagerySource();
            GeoImageryViewModel geoImageryView = new OpenStreetMapImageryView();

            if (geoImagerySource == GeoImagerySource.OpenStreetMapImagery)
            {
                geoImageryView = new OpenStreetMapImageryView();
            }
            //TODO: might require refactoring based on how MapQuestImagery is implemented in XamGeoMap
            else if (geoImagerySource == GeoImagerySource.MapQuestImagery)
            {
                if (geoMap.BackgroundContent is MapQuestStreetImagery)
                {
                    geoImageryView = new MapQuestStreetImageryView();
                }
                else // if(geoMap.BackgroundContent is MapQuestStreetImagery)
                {
                    geoImageryView = new MapQuestSatelliteImageryView();
                }
            }
            else if (geoImagerySource == GeoImagerySource.BingMapsImagery)
            {
                var geoImagery = geoMap.BackgroundContent as BingMapsMapImagery;
                var style      = geoImagery.GetImageryStyle();
                geoImageryView = new BingMapsImageryView(style);
            }
            else if (geoImagerySource == GeoImagerySource.EsriMapImagery)
            {
                var geoImagery = geoMap.BackgroundContent as ArcGISOnlineMapImagery;
                //var style = geoImagery.GetImageryStyle();
                //geoImageryView = new BingMapsImageryView(style);
                //TODO: add ESRI
            }
            return(geoImageryView);
        }
Exemplo n.º 28
0
        /// <summary>
        /// Loads geo-imagery from specified imagery style of BingMaps
        /// </summary>
        public static void LoadGeoImagery(this XamGeographicMap geoMap, Infragistics.Controls.Maps.BingMapsImageryStyle imageryStyle)
        {
            var geoImageryStyle = (IGExtensions.Common.Maps.Imagery.BingMapsImageryStyle)imageryStyle;

            geoMap.LoadGeoImagery(new BingMapsImageryView(geoImageryStyle));
        }
Exemplo n.º 29
0
 /// <summary>
 /// Loads geo-imagery from specified imagery style of ESRI
 /// </summary>
 public static void LoadGeoImagery(this XamGeographicMap geoMap, EsriMapImageryStyle imageryStyle)
 {
     geoMap.LoadGeoImagery(new EsriMapImageryView(imageryStyle));
 }
Exemplo n.º 30
0
 /// <summary>
 /// Loads geo-imagery from specified imagery style of MapQuest
 /// </summary>
 public static void LoadGeoImagery(this XamGeographicMap geoMap, MapQuestImageryStyle imageryStyle)
 {
     geoMap.LoadGeoImagery(new MapQuestImageryView(imageryStyle));
 }