ThinkGeo.com    |     Documentation    |     Premium Support

Markers Not Deleted When InMemoryMarkerOverlay is removed

 I am running into an issue with the InMemoryMarkerOverlay.  I am adding markers to the map that represent selected points.  When I go to remove the selected points on the map the graphical representations of the markers still exist on the map, but the overlay no longer exists in the map.overlays object (seent through the debugger).  Here is my code to remove the InMemoryMarkerOverylay from the map:



                        map.Overlays.Remove("MarkerOverlay");


                        map.Refresh();



This removes the overlay from the collection, but the markers still show up in the map but they seem to be floating (they are not tied to an x/y, but will display in the same x/y location of the window when the map is zoomed in or out.


 


Any help is appreciated.



Hi Sean, 
  
 I simply modified our how do I sample (Markers/AddAnInMemoryMarkerOverlay and Markers/AddAFeatureSourceMarkerOverlay) with your code, but cannot recreate the issue you mentioned. Could you show us your code exactly and the version you are using? 
  
 Sorry for the inconvenience. 
  
 Thanks, 
 Howard

Howard, 
  
 My code to add the layer is: 
  
         public void selectResultsFromShape(BaseShape shape) 
         { 
             FeatureLayer lyr = (FeatureLayer)getLayer(resultsLayerName); 
             Collection<Feature> features = lyr.QueryTools.GetFeaturesWithin(shape, ReturningColumnsType.AllColumns); 
  
             InMemoryMarkerOverlay markerOverlay = new InMemoryMarkerOverlay(getAllColumnsFromLayer(resultsLayerName)); 
  
             markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.ImageSource = new BitmapImage(new Uri("/MapControls;component/Resources/us.png", UriKind.RelativeOrAbsolute)); 
             markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.Width = 20; 
             markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.Height = 20; 
             markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.YScreenOffset = -10; 
             markerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
             markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.ToolTip = "[#INCIDENT_NUM#]"; 
  
             markerOverlay.Name = selectedPointsOverlay; 
  
             markerOverlay.FeatureSource.BeginTransaction(); 
  
             foreach (Feature feature in features) 
                 markerOverlay.FeatureSource.AddFeature(feature); 
  
             markerOverlay.FeatureSource.CommitTransaction(); 
  
             map.Overlays.Add(selectedPointsOverlay, markerOverlay); 
             map.CurrentExtent = markerOverlay.FeatureSource.GetBoundingBox(); 
  
             OnAddLayerToLegendEvent(selectedPointsOverlay); 
  
             map.Refresh(); 
         } 
  
 and they code to remove it is in my previous post. 
  
 I am using version 4.0.40.0 from 6/13/2010 that I downloaded to use with the 60 day trial.  Maybe this issue is fixed in a more recent version? 
  
 Thanks again for your help.

Hi Sean, 



For some reason about the variable in your code, I cannot run it directly. The code seems fine. Here attaches the code I tested with the latest version. You can simply replace the cs file in our HowDoSamples/Markers/AddAnInMemoryMarkerOverlay.cs and add a button in the XAML to test. You can also download the latest version at helpdesk.thinkgeo.com



If the issue still exists, please send us a simple sample that we can directly recreate your issue.



Sorry for the inconvenience and feel free to let us know if you have more queries.



Thanks,

Howard



001_AddAnInMemoryMarkerOverlay.txt (2.14 KB)