ThinkGeo.com    |     Documentation    |     Premium Support

Previous Extent History is cleared

 Hi All,


I have a custom tool which is used to move to previous extent of the map.


it uses javascript code


Map1.ZoomToPreviousExtent();


 


I have another tool which runs server side code to change the extent of the map.


 


Map1.CurrentExtent = lyr.FeatureSource.GetBoundingBox();


 


 


now, after the map is refreshed, 


ZoomToPreviousExtent() doesnt do anything.


 


I have investigated and found that 


var nav= Map1.GetMapParser().map.getControlsByClass('OpenLayers.Control.NavigationHistory');


it only contains current extent.


 


is there any way to fix the problem?


I want user to be able to click previous extent and go to the extent of the map before running the server side code.


Any help will be much appreciated.


 


Thanks



Hi, pradeep 
  
 Sorry for delay response. Yes,  the nav variable only contains the current center and resolution; that’s because the app just has initialized right now.  
 If you want to know more, please refer to the NavigationHistory sample in our installed samples which you could find its source code at Samples\NavigateTheMap\NavigationHistory.aspx". 
  
 If you still have any problem please let me know. 
  
 Thanks, 
 Khalil

Hi Khalil, 
 Probably, I was not clear in my explanation. 
  
 after initial loading of the map, change the extent of the map using the slider few times. 
 then call javascript function, ZoomToPreviousExtent and it works. 
  
 now, do a partial postback to the server. 
 after the partial postback has finished,  call ZoomToPreviousExtent  again and it doesnt do anything. 
  
 Thanks for your help. 
 Pradeep 


Hi, pradeep 
  
 OK, I have got your idea now. You mean if do a partial postback to the server and then the ZoomToPreviousExtent or ZoomToNextExtent method doesn’t work.  
 I have tested that if the “partial postback” you have mentioned means callback, and these methods will work well; but the postback event(such as the asp.net button click event) will rebuild the Web Map control including NavigationHistory control; so no items are in the previous history or next stack, these have no effect. 
  
 So, if you have to do the postback to the server, please persist the state for the NavigationHistory control. 
  
 Thanks, 
 Khalil

Hi Khalil, 
 Thanks for the reply. 
 Is there any example of how to persist the state of NavigationHistory control? 
 Thanks

Hi, pradeep



Please place the server controls (such as asp.net button) that will trigger postback event into a UpdataPanel control; so it will help you to persist the state of NavigationHistory control. Please refer to the code below:



<form id="form1" runat="server">
<asp:ScriptManager ID="Map1_Script" runat="server">
</asp:ScriptManager>
<cc1:Map ID="Map1" runat="server" Width="100%" Height="100%">
</cc1:Map>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <Description:DescriptionPanel ID="DescPanel" runat="server">
            Change the extent of the map and click the buttons below to revert extent or toggle
            extent.
            

            

            [script removed]
            [script removed]
            [script removed]
            [script removed]
        </Description:DescriptionPanel>
    </ContentTemplate>
</asp:UpdatePanel>
</form>



Thanks,

Khalil 



 Hi Khalil,


please goto


hireconsultant.com.au/thinkgeo/ 



download NavigationHistory.zip 


 


load the page, zoom in and zoom out using the mapsuite toolbar.


then click on zoom next and zoom prev buttons.


It works.


now, click on "select by rectangle" button, draw a rectangle on the map.


once the map is reloaded, try using zoom next and zoom prev buttons, they will not work.


 


Thanks,


Pradeep



Hi, pradeep


Thanks for your code. The problem do exists. That's because you have register an TrackShapeFinished event for the map control; so the postback event will be fired which couldn't be controled by UpdatePanel and the state of NavigatinHistory control can't be persisted. 


So we need to write the persist code by ourself. Please refer to the sample in the attachment. I use the hidden field to persist the state. I just modify the Default aspx page and the others stay the same as yours. Please check out it.


Thanks,


Khalil



2013-NavigationHistory.zip (3.68 KB)

Khalil, 
 You are a GEM!!! 
 Thanks mate. 
 Much appreciated. 


pradeep, 
  
 You are welcome. Let us know if you have more questions. 
  
 Thanks, 
 Khalil