====== Source Code WpfDesktopEditionSample HighlightAtMouseHover CS 120131.zip ====== ====App.xaml.cs==== using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Windows; namespace HighlightAtMouseHover { /// /// Interaction logic for App.xaml /// public partial class App : Application { } } ====TestWindow.xaml.cs==== using System; using System.Collections.ObjectModel; using System.Windows; using System.Windows.Input; using System.Windows.Media; using System.Windows.Threading; using ThinkGeo.MapSuite.Core; using ThinkGeo.MapSuite.WpfDesktopEdition; namespace HighlightAtMouseHover { /// /// Interaction logic for TestWindow.xaml /// public partial class TestWindow : Window { private PointShape mousePosition = null; private DispatcherTimer highlightTimer = null; public TestWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { //Sets the correct map unit and the extent of the map. wpfMap1.MapUnit = GeographyUnit.DecimalDegree; wpfMap1.CurrentExtent = new RectangleShape(-128,51,-65,19); wpfMap1.Background = new SolidColorBrush(Color.FromRgb(148, 196, 243)); WorldMapKitWmsWpfOverlay worldMapKitWmsWpfOverlay = new WorldMapKitWmsWpfOverlay(); wpfMap1.Overlays.Add(worldMapKitWmsWpfOverlay); LayerOverlay layerOverlay = new LayerOverlay(); ShapeFileFeatureLayer shapeFileLayer = new ShapeFileFeatureLayer(@"../../data/USStates.shp"); shapeFileLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(20, GeoColor.StandardColors.LightGreen), GeoColor.StandardColors.LightGray); shapeFileLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; layerOverlay.Layers.Add("StatesLayer", shapeFileLayer); wpfMap1.Overlays.Add("LayerFeatureOverlay", layerOverlay); //Highlight layer InMemoryFeatureLayer highlightLayer = new InMemoryFeatureLayer(); highlightLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.FromArgb(120, GeoColor.StandardColors.LightGreen), GeoColor.StandardColors.LightGray); highlightLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; LayerOverlay highlightOverlay = new LayerOverlay(); highlightOverlay.Layers.Add("HighlightLayer", highlightLayer); wpfMap1.Overlays.Add("HighlightOverlay", highlightOverlay); wpfMap1.Refresh(); } private void wpfMap1_MouseMove(object sender, MouseEventArgs e) { //Logic for Highlighting mousePosition = wpfMap1.ToWorldCoordinate(e.GetPosition(wpfMap1)); if (highlightTimer != null) { highlightTimer.Stop(); } highlightTimer = new DispatcherTimer(); highlightTimer.Interval = new TimeSpan(1000000); highlightTimer.Tick += new System.EventHandler(timer_Tick); highlightTimer.Start(); //Gets the PointShape in world coordinates from screen coordinates. Point point = e.MouseDevice.GetPosition(null); ScreenPointF screenPointF = new ScreenPointF((float)point.X, (float)point.Y); PointShape pointShape = ExtentHelper.ToWorldCoordinate(wpfMap1.CurrentExtent, screenPointF, (float)wpfMap1.Width, (float)wpfMap1.Height); textBox1.Text = "X: " + DecimalDegreesHelper.GetDegreesMinutesSecondsStringFromDecimalDegree(pointShape.X) + " Y: " + DecimalDegreesHelper.GetDegreesMinutesSecondsStringFromDecimalDegree(pointShape.Y); } void timer_Tick(object sender, System.EventArgs e) { HighlightAFeatureContainingPoint(mousePosition); highlightTimer.Stop(); } private void HighlightAFeatureContainingPoint(PointShape point) { LayerOverlay highlightOverlay = (LayerOverlay)wpfMap1.Overlays["HighlightOverlay"]; ShapeFileFeatureLayer featureLayer = (ShapeFileFeatureLayer)((LayerOverlay)wpfMap1.Overlays["LayerFeatureOverlay"]).Layers["StatesLayer"]; InMemoryFeatureLayer highlightLayer = (InMemoryFeatureLayer)highlightOverlay.Layers["HighlightLayer"]; featureLayer.Open(); Collection features = featureLayer.QueryTools.GetFeaturesContaining(point, ReturningColumnsType.NoColumns); featureLayer.Close(); if (features.Count != 0) { highlightLayer.Open(); highlightLayer.InternalFeatures.Clear(); highlightLayer.InternalFeatures.Add(features[0]); highlightLayer.Close(); } else { highlightLayer.Open(); highlightLayer.InternalFeatures.Clear(); highlightLayer.Close(); } highlightOverlay.Refresh(); } } }