ThinkGeo.com    |     Documentation    |     Premium Support

MarkerOverlay Speed needed

 Hello ThinkGeo Forum:


I have a few questions in regards to plotting multiple markers and how to make viewing experience more enjoyable for the end user.


I am currently using InMemoryMarkerOverlay.  When using this approach there are multiple call backs to the server for PopUp information and Marker Location.  This causes allot of wait times as I would also like to implement Clustering and perhaps I don't have the variables setup correctly on clustering but the markers blink and the user must wait after panning the map for the clusters to reload correctly.


Is there anyway to make plotting many markers faster?


 


Thanks,


Kevin 



 One more thing, I have had issues getting the popUp delay to work correctly.  Currently using clustering and InMemoryMarkerOverlays I haven't had any luck setting up popUp Delay.


Is there a way around this?


 


Thanks,

Kevin



Kevin, 
  
 I think the suggestions on this thread might help you out: 
  
 gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/12/aft/9608/afv/topic/Default.aspx#28535 
  
 With this hybrid approach the cluster points are drawn server side which will be much quicker than displaying each of them as a marker, while the pop up information will still utilize the InMemoryMarkerOverlay so the popups are responsive and on the client side.   
  
 Give it a try and let us know if it helps. 
  
 Thanks!

 Thanks for the info Clint,


Thats the approach I am using, InMemoryMarkerOverlay combined with ClusterMarkerStyle.  Is there anything quicker?


 


And does anyone know how to fix the delay popup?  My PupUps are instant and it gets really annoying when your zooming with the shift button and as you pass over 50 markers they all fly open.


 


Thanks,


Kevin



Kevin, 
  
 That is the quickest way if you want hover functionality because all of that information has to be client side.  If speed is important I would recommend not using hover functionality and initiate the popup when the point is clicked.  With this approach you only retrieve the data when you need it and you don’t have to send all of the hover data down to the client when the page initially loads.  It’s a trade off either way but if you have a lot of points on the map this approach will perform better. 
  
 On the PopupDelay issue I was able to get it to work by adding the code below to the SetTheHoverPopupOfAMarker sample application in the How Do I sample apps.   The delay is in Milliseconds so 5000 is equal to 5 seconds. 
  
 markerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.PopupDelay = 5000; 
  
 Hope this helps. 
  
 Thanks!

Hey Clint, 
  
 I am using InMemoryMarkerOverlay and Custom Marker Styles set to equal this declaration: 
  
 var markerStyle =
                            new PointMarkerStyle(new WebImage("…/theme/default/img/Compressor.png", 15, 15))
                                {
                                    Popup = {ContentHtml = “[#YourOwnColumn#]”, AutoSize = true, HasCloseButton = true,},
                                };
 
  
 I can’t get that PopupDelay code to work anywhere… 
  
 Any ideas, 
 Kev

 Kevin,


I was able to use your code and add the PopupDelay property to your markerStyle and get it to work.  Below is my code:


 



                var markerStyle =
                 new PointMarkerStyle(new WebImage("../../theme/default/img/marker_green.gif", 21, 25))
                 {
                     Popup = { ContentHtml = "TEST", AutoSize = true, HasCloseButton = true, },
                 };

                markerStyle.PopupDelay = 5000;

                InMemoryMarkerOverlay markerOverlay = new InMemoryMarkerOverlay("MarkerOverlay");
                markerOverlay.Features.Add("Lawrence", new Feature(-95.28109, 38.95363));
                markerOverlay.ZoomLevelSet.ZoomLevel01.CustomMarkerStyle = markerStyle;
                markerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
                Map1.CustomOverlays.Add(markerOverlay);

Let us know if this helps.  Thanks!



Hey Clint, 
  
 This is still not working… The PopUp Opens as expected, but it opens right away. 
  
 Any other ideas? 
  
 Thanks for the help, 
 Kevin

Can you provide a simple self contained sample showing the issue?  With that I should be able to recreate the issue and debug it and find out what’s occurring. 
  
 Thanks!

I am also setting  
 
currentCluster.MarkerStyle = markerStyle;
 
 
  
 Would that change the behaviour?  Cause I tried your code and it works… 
  
 Thanks, 
 Kev

Possibly, can you provide a little bit more of your code and what your currentCluster object looks like?

Hey Clint, 
  
 Sorry to be posting away like this but the issue resides in using Clustering… 
  
 I included this into your code and it breaks it 
 
var currentCluster = new ClusterMarkerStyle(10, Map1.WidthInPixels, Map1.HeightInPixels);
            var markerStyle =
              new PointMarkerStyle(new WebImage("…/…/theme/default/img/marker_green.gif", 21, 25))
              {
                  Popup = { ContentHtml = "TEST", AutoSize = true, HasCloseButton = true, },
              };

            markerStyle.PopupDelay = 5000;
            currentCluster.MarkerStyle = markerStyle;
            InMemoryMarkerOverlay markerOverlay = new InMemoryMarkerOverlay("MarkerOverlay");
            markerOverlay.Features.Add("Lawrence", new Feature(-95.28109, 38.95363));
            markerOverlay.ZoomLevelSet.ZoomLevel01.CustomMarkerStyle = markerStyle;
            markerOverlay.ZoomLevelSet.ZoomLevel01.CustomMarkerStyle = currentCluster;
            markerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            Map1.CustomOverlays.Add(markerOverlay);
 
 
  
 It is pretty apparent why this breaks it as you are copying over the CustomMarkerStyle with the new currentCluster style but how do you include popUpDelay on Clusters. 
  
 Thanks for the help, 
 Kev

Kevin, 
  
 Thanks for the additional information, I was able to recreate the issue and wasn’t able to find a work around for now.  I have submitted it to the development team and they will look at it when they get a chance and update this post when there is any progress. 
  
 Thanks for reporting this!

Hey Clint, 
  
 Does clustering work with Click PopUps? 
  
 Thanks, 
 Kev

Kevin, 
  
 Yes with the click event you can do what ever you like including PopUps, take a look a the  Find the Feature the User Clicked sample application to show you could implement the PopUp on a click. 
  
 Thanks!

Awesome Clint! 
  
 I’ll go that route. 
  
 Thanks, 
 Kev

Thanks Kevin, glad to help!

Hey Clint, 
  
 I am going to bother you one last time :) 
  
 Where can I find that example for the ‘User Clicked sample application’?  I’ve taken a look but came up cold… 
  
 Thanks, 
 Kev

No problem Kevin, you can find the sample under the Getting Started Section of the How Do I samples that get installed with the product.  The exact name of the sample is "Find the Feature the User Clicked on". 
  
 Thanks!

I thought update this thread and let everyone know that the PopUpDelay bug tied to the ClusterMarkerStyle has been fixed and is now available in the daily build. 
  
 Thanks!