ThinkGeo.com    |     Documentation    |     Premium Support

pointShape Hover Events

 My company is evaluating the desktop and geocoder editions of thingeo's GIS software for integration into our software suite.  I have been tinkering with the map and geocoder APIs for a few days now and can not seem to figure out how to accomplish simple hover functionality.  I am pinning pointShapes to the map with something like:



               PointShape pointShape = new PointShape(geocoderMatches[0].NameValuePairs["CentroidPoint"]);


               winformsMap1.Overlays["MarkerOverlay"].Lock.EnterWriteLock();

               try

               {

                   markerLayer.EditTools.BeginTransaction();

                   markerLayer.EditTools.Add(new Feature(pointShape));

                   markerLayer.EditTools.CommitTransaction();

               }

               finally

               {

                   winformsMap1.Overlays["MarkerOverlay"].Lock.ExitWriteLock();

               }


I would like to add logic to my application so that when a user hovers his/her mouse pointer over a pointShape on the map he/she is presented with a tool tip or popup window with text describing the pointShape's location on the map (house number, street name, city, state, etc).  This seems easy enough to do with the silverlight and web suites but I can not figure out a good way to accomplish this with the desktop edition or the geocoder API's.  Am I missing something?




Brandt,

 


Thanks for your post,


Please use the following code to implement your requirement in your application:


 



     SimpleMarkerOverlay markerOverlay = (SimpleMarkerOverlay)winformsMap1.Overlays["MarkerOverlay"];
PointShape pointShape = new PointShape(geocoderMatches[0].NameValuePairs["CentroidPoint"]);


            Marker marker = new Marker(pointShape);
            marker.Image = Properties.Resources.AQUA;
            marker.Width = 20;
            marker.Height = 34;
            marker.YOffset = -17;

            StringBuilder sb = new StringBuilder();
            sb.AppendLine("Your text tool tip");
            sb.AppendLine("Your text tool tip");
            sb.AppendLine("Your text tool tip");
            sb.AppendLine("Your text tool tip");

            marker.ToolTipText = sb.ToString();

            markerOverlay.Markers.Add(marker);

            winformsMap1.Refresh();

I believe this is what you want exactly, if you still have any other questions please let us know,


Thanks,


Scott,



Scott, 
  
 The code you were kind enough to supply looks more like what I am looking for.  However, I dont see how I can get the map to paint the marker objects on the map if I add them to an overlay instead of a layer.  Previously I was defining an overlay of type LayerOverlay and a layer of type InMemoryFeatureLayer and adding the layer to the overlay with LayerOverlay.Add().  Then I could draw PointSapes on the layer and they would render on the map.   
  
 If I cast my Layer overlay object as a SimpleMarkerOverlay like: 
  
 SimpleMarkerOverlay markerOverlay = (SimpleMarkerOverlay)winformsMap1.Overlays["MarkerOverlay"]; 
  
 then my markerOverlay object is set to null.  If I declare my overlay as type SimplerMarkerOverlay to begin with I cant "bind" my layer to my overlay because SimpleMarkerOverlays do not have a Layers.Add() method.   
  
 So, I am kind of at a loss as to how I can get my points to render as markers on an overlay without adding them to a layer that I can set zoom levels on and bind to an overlay.  Does that make sense? 
  
 Thanks,  
 -Brandt

Brandt,


I made a simple sample so that you can run it correctly and check the marker tool tip functionality, please get the attached sample and reference the MapSuiteCore.dll and DesktopEdition.dll to run.


Also in this sample I didn't reference the MapSuiteGeocoder.dll, you just need to reference it and use the geocoding matched location to instead of the current point location.


If you still have any other questions please let us know,


Thanks,


Scott,



ToolTipForMarker.zip (14.1 KB)