ThinkGeo.com    |     Documentation    |     Premium Support

Editing a Feature

Hello,


  I have an InMemoryMarkerOverlay defined to which I am adding icons to a particular point like so:



        private void SetupInitialIconDisplay()
        {
            string lSiteId = string.Empty;
            Double lLatitude = 0;
            Double lLongitude = 0;
            string szSiteDesc = string.Empty;
            int DisplayState = 2;
            string DisplayText = string.Empty;
 
            InMemoryMarkerOverlay markerOverlay = new InMemoryMarkerOverlay();
            markerOverlay.Name = "IconMarkerOverlay";
            markerOverlay.MapControl = winformsMap1;
            markerOverlay.Columns.Add(new FeatureSourceColumn("Name"));
 
            foreach (DataRow row in dt.Rows)
            {
                lSiteId = row["lSiteID"].ToString();
                lLatitude = Double.Parse(row["lLatitude"].ToString());
                lLongitude = Double.Parse(row["lLongitude"].ToString());
                szSiteDesc = row["szSiteDesc"].ToString();
                DisplayState = int.Parse(row["DisplayState"].ToString());
                DisplayText = row["DisplayText"].ToString();
 
                markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.Image = GetImage(DisplayState);
 
                Feature newFeature = new Feature(lLongitude, lLatitude, lSiteId);
                newFeature.ColumnValues.Add("Name", szSiteDesc);
                newFeature.Tag = lSiteId.ToString();
 
                markerOverlay.FeatureSource.BeginTransaction();
                markerOverlay.FeatureSource.AddFeature(newFeature);
                markerOverlay.FeatureSource.CommitTransaction();
            }
            markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.Width = 20;
            markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.Height = 34;
            markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.XOffset = -9;
            markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.YOffset = -25;
            markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultPointMarkerStyle.ToolTipText = "[#Name#]";
            markerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
 
            winformsMap1.Overlays.Add("MarkerOverlay", markerOverlay);
        }

What is the best way to update an icon on a particular Feature?.  Icons can be red, green, or grey.  
For example, say all icons are red.  The app receives an update indicating that one icon should be 
changed to green.  What code whould work in this case?

Thanks,
  Steven


 



Steve,


I have reviewed your sample code that I found that use InMemoryMarkerOverlay maybe not easy to implement your requirement, could you switch to use SimpleMarkerOverlay which can do it easily, I attached my sample code which you can refer to.
 
Let me know if you have questions.
 
Thanks,
James

 



8602_Editing_a_Feature.zip (3.09 KB)

James. 

With a SimpleMarkerOverlay, I am losing the ToolTip capability.  This is a requirement I cannot drop. I am using this to display information about the location of the icon.   

Also, in my app, the icons are being displayed based on latitude and longitude.  The Marker constructor, takes WorldX and WorldY parameters.  I suspect that latitude and longitude must be converted to X and Y positions on the map.  When I substitute latitude and longitude directly for X an Y, I see no icons.  There must be way to convert latitude and longitude to WorldX and WorldY. 

I have no problem using the SimpleMarkerOverlay if these 2 issues can be resolved.  Can these 2 issues be resolved? 



Regards, 

Steven



Ok, I found the ToolTipText property of the Marker, so that has been resolved.  I still need to know how to convert latitude and longitude to WorldX and WorldY.  
  
 Regards, 
   Steven

James, 


  It turns out I was able to resolve both issues, I had the latitude and longitude reversed.  Thanks for the code.


 


Regards,


  Steven



Steven, 
  
 I am glad you fix those two issues by yourself, just feel free to let me know if you have more questions. 
  
 Thanks, 
 James