ThinkGeo.com    |     Documentation    |     Premium Support

Draggable marker and context menu

Hi,


Does the Silverlight Edition support features such as draggable markers and right-click context menu that are available in the Web Edition?


To drag a marker, I tried using the MouseLeftButtonDown and MouseLeftButtonUp events on the SimpleMarkerOverlay and the MouseMove event on the Map as follows:



 



private bool mouseHeldOnMarker = false; // Flag to check whether the user has held a marker using the left mouse buttonprivate Marker currentlyHeldMarker = null; // Marker object to store the marker currently held by the user using the left mouse button

 


{


mouseHeldOnMarker =


currentlyHeldMarker =


}


 


{


mouseHeldOnMarker =


currentlyHeldMarker = e.CurrentMarker;


}


 


 


{


 


{


 


// Update position of the marker


}


}


void markerOverlay_MouseLeftButtonUp(object sender, MarkerOverlayMouseEventArgs e)false;null;void markerOverlay_MouseLeftButtonDown(object sender, MarkerOverlayMouseEventArgs e)true;private void Map1_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)if (mouseHeldOnMarker && currentlyHeldMarker != null)PointShape newPoint = Map1.ToWorldCoordinate(e.GetPosition(Map1));

When I try to drag the marker, the map catches the mouse down event and pans around. After I release the mouse button and move the mouse, the marker keeps moving around with the cursor because the marker overlay does not catch the mouse up event. I can try fixing it but might still end up being messy.


Would you be able to provide some sample code to implement those features if they are not already available?


Thanks,


Nirish



 



Code in proper format: 
  
         // Flag to check whether the user has held a marker using the left mouse button 
         private bool mouseHeldOnMarker = false; 
         // Marker object to store the marker currently held by the user using the left mouse button 
         private Marker currentlyHeldMarker = null; 
  
         void markerOverlay_MouseLeftButtonUp(object sender, MarkerOverlayMouseEventArgs e) 
         { 
             mouseHeldOnMarker = false; 
             currentlyHeldMarker = null; 
         } 
  
         void markerOverlay_MouseLeftButtonDown(object sender, MarkerOverlayMouseEventArgs e) 
         { 
             mouseHeldOnMarker = true; 
             currentlyHeldMarker = e.CurrentMarker; 
         } 
  
         private void Map1_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) 
         { 
             if (mouseHeldOnMarker && currentlyHeldMarker != null) 
             { 
                 PointShape newPoint = Map1.ToWorldCoordinate(e.GetPosition(Map1)); 
                 // Update position of the marker 
             } 
         }

NIrish, 
  
 Sorry, these two features are not available in our current version. But we have a context menu in our online sample which can be found in any of our samples. Please look for the defination of two related classes at the end of the Page.xaml.cs; then search how to use them through the code. 
  
 We cannot work on the draggable marker until this Thursday. I’ll think about it then. I’ll let you know when I have a update. 
  
 Thanks, 
 Howard

Thanks Howard. I’ll look forward to your update. 
  
 Cheers, 
  
 Nirish

Nirish, 
  
 Thanks for your understanding and support. I’ll send you the sample then. 
  
 Just let me know if you have more questions. 
  
 Thanks, 
 Howard

Hi Howard, 
  
 Just wondering if you’ve had a chance to work on the draggable marker sample? 
  
 Thanks, 
  
 Nirish

Nirish,



Thanks for reminding me this. Here is the sample. This feature might be integrated in our next release, please have a try and let me know if you have any questions.



Thanks,

Howard



1469-Post6470.zip (1.92 KB)

Thanks Howard! Works perfectly! :)

Nirish, 
  
 You are welcome. Please let me know if you have more questions. 
  
 Thanks, 
 Howard