ThinkGeo.com    |     Documentation    |     Premium Support

Adding Click Popup Views with InMemoryMarkerOverlay

 Hey Everyone,


I've looked around to find an answer to this and I am sure there are multiple answers but I really didn't find the right...OR best solution to this issue. 


What I have setup is a InMemoryMarkerOverlay with a column add:


markerOverlay.Columns.Add(new FeatureSourceColumn("YourOwnColumn"));


But instead of having a mouse over event trigger the retrieval of the html div popup for the Marker I would like to have a click event retrieve the information and display the popup.


 


What is the correct way to achieve this?


 


Thanks Kevin



Dear Kevin, 



Please see this code below, I hope it can help: 




        protected void Map1_Click(object sender, MapClickedEventArgs e)
        {
            InMemoryMarkerOverlay markerOverlay = (InMemoryMarkerOverlay)Map1.CustomOverlays["MarkerOverlay"];
            Collection<Feature> features =  markerOverlay.FeatureSource.GetFeaturesByColumnValue("YourOwnColumn", "YourValue");
            //then you can loop the features to retrieval the information you want and show a popup
        }



If I misunderstanding something, please feel free to tell me. 



Regards, 



Gary




 But shouldn’t there be a easier way to do this by registering the mouse click event to the popup on the InMemoryMarkerOverlay “Marker” rather than the information being shown when the mouse is held over the marker? 
  
 I was trying to figure out a way of doing that but a clear method to do this wasn’t apparent. 
  


And one more quick question… 
  
 What would be the argument for the ColumnValue in : 
  
 Collection<Feature> features =  markerOverlay.FeatureSource.GetFeaturesByColumnValue("YourOwnColumn", "YourValue"); 
  
 I am trying to return the contentHtml string that was created which exists in the column "YourOwnColumn" 
  
 Thanks, 
 Kevin

Kevin, 
  
 Thanks for your post, yes there is a way to show the information like popup, it calls customrPopup. 
  
 Regards, 
  
 Gary

Kevin, 



Here is some sample code, please try it, and you can change the custompopup's width&height, please change the code and have a try: 


first register the event: markerOverlay.Click += new EventHandler<MarkerOverlayClickEventArgs>(markerOverlay_Click);



protected void markerOverlay_Click(object sender, MarkerOverlayClickEventArgs e )
        {
           InMemoryMarkerOverlay markerOverlay = (InMemoryMarkerOverlay)Map1.CustomOverlays["MarkerOverlay"];
           markerOverlay.FeatureSource.Open();
            Feature feature = markerOverlay.FeatureSource.GetFeatureById(e.FeatureId, new Collection<string> { "YourOwnColumn" });
            markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup = new CustomPopup("clickPopup", new PointShape(feature.GetWellKnownText()), feature.ColumnValues["YourOwnColumn"]);
        }



Any more questions please feel free to let me know. 



Regards, 



Gary