ThinkGeo.com    |     Documentation    |     Premium Support

Question about MarkerOverlay and Markers

 Hi,


When using simplemarkeroverlay, Ajax and marker drag then when reading the markeroverlay to find the new marker position on the server side after a drag the marker position seems not to have been synchronized with the markeroverlay on the client side.


 


Is it me or a bug?


 


thanks .


 


jm.



 Hi JM,



 


Thanks for you post and would you please try the following code: 


Controller Side:


        public ActionResult UseDraggableMarkers()


        {


            Map map = new Map ("Map1", System.Web.UI.WebControls.Unit(100,System.Web.UI.WebControls.UnitType.Percentage), 510);


            map.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));


            map.CurrentExtent = new RectangleShape(-13939426.6371, 6701997.4056, -7812401.86, 2626987.386962);


            map.MapUnit = GeographyUnit.Meter;


 


            SimpleMarkerOverlay markerOverlay = new SimpleMarkerOverlay("MarkerOverlay");


            markerOverlay.DragMode = MarkerDragMode.Drag;


            markerOverlay.OnClientMarkerDragged = "onClientMarkerDragged";


            // .....


}


 


View Side:


    function onClientMarkerDragged(e) {


        var x = e.worldXY.lon;


        var y = e.worldXY.lat;


        var overlayId = e.overlayId;


        var markerId = e.markerId;


        var params = { lon: x, lat: y, id: markerId };


        Map1.ajaxCallAction('@ViewContext.RouteData.Values["Controller"].ToString()', 'UpdateDragableMarker', params);


    }


 


Hope it helps.


 


Johnny



Hi Johnny, 
  
 Maybe I wasn’t clear enough but my question was about a marker that has been displayed on the client side but after a drag of this marker the overlay doesn’t seems to be updated on the server side because the marker positionninsidenthe overlay is still the position before the drag!  FYI I do use an Ajax call and then I do read the overlay but marker position still not the new position after drag.  I have ended by sending the position myself from the client to the server but this doesn’t make sense to me.  Thinkgeo should manage to keep client and server in sync or I missed something. 
  
 Jm

Last not least the on marker dragged event does not work .  The event seems to be not triggered at all .

Hi Jean,



The previous block code is raw and something might misunderstand. I think MVC should be stateless, we don't need to maintain or synchronize its states between actions or controllers. What you think is more like a postback and viewstate; it is what regular web application does.


In MVC edition, we allow the state to pass when redirect to an action, but we don't maintain or sync it as I descript above. I'm sure Microsoft control won't sync states neither when doing an ajax call. So the application level should manage to sync it.


Here is a sample for you, please take a look at it and let us know if you have more queries.


Thanks you very much,

Howard



DragableMarker.zip (78.4 KB)

Thanks Howard, 
  
 However, I have built all my application with the map definition inside the view…    
  
  
 could you provide a working drag marker with the map defined inside the view? 
  
 thanks.

Hi JM, 
  
 I guess I’m clear about what you would like now, but I need to say sorry that the “OnClientMarkerDragged” is missed from the “SimpleMarkerOverlaySetting”, in other words, we are unable to set it inside the view now, we will try adding this one in next 2 days, for our codes is still in freeze mode, we will restart our daily build tomorrow, then we will do this change and let you know. 
  
 Regards, 
 Johnny

Hi Treasa,  
  
 The 7.0 release updated packages can be avaiable at our website now, please get it at thinkgeo.com/download/ and have a try. It has been integrated this API. 
  
 Thanks,  
 Johnny