ThinkGeo.com    |     Documentation    |     Premium Support

GetCurrentExtent issue

Hi all,


I seem to be having an issue with the GetCurrentExtent javascript function.  I'm sure it's just me not knowing how to use it, but could someone give me a few pointers?  My map is defined as such:


 ID="MainMap" Width="625px" Height="625px"  OnClientExtentChanged="OnMapExtentChanged()"


And my OnMapExtentChanged() javascript function is:


     function OnMapExtentChanged() {

         var Map1 = document.getElementById('<% = MainMap.ClientID %>');

         var extent = Map1.GetCurrentExtent();

      }  


 


Running this code, however, does not let my map render due to the second line in the function.  Any help?  Thanks in advance!


-Dustin


 



Dustin,


The Map1 you get by "document.getElementById('<% = MainMap.ClientID %>')” is our map control which does not have the “GetCurrentExtent ()” method, please directly use Map1 instead which is a javascript object we provided for easier use on client.  For more Client Side APIs please check the link below.


gis.thinkgeo.com/Support/Dis...fault.aspx


 
    function OnMapExtentChanged() {
            var extent = Map1.GetCurrentExtent();
            alert(extent);
        }
         

Thanks,


Ben



1245-Post6346.zip (96.3 KB)

Thanks very much for your help Ben, the Overview part in the Client API is what confused me.  It seemed like I would have to actually get the map element myself.  Could you tell me what about a Master page makes this feature not work?  It simply locks up the map. I've used the same you provided and created something more along the lines of my scenario.  Would you mind taking a look?  Thanks very much!


-Dustin



1247-Post6346.zip (104 KB)

Dustin, 
  
 In web edition, the “Map1” object is a JavaScript object which has some helpful methods; it’s the client id of your map control’s. But in master page, the client id will be changed; so please use the following code to get the exact one. 
  
 var extent =<%=Map1.ClientID%>.GetCurrentExtent(); 
  
 If you have any more questions, please let me know. 
  
 Thanks, 
 Howard 


Thank you very much, Howard.  It's strange not having to use quotes in that context, but it certainly did solve the problem.   Do you have any suggestions on how to get the scale, as well?  I've tried going through the OpenLayers documentation, but I can't seem to get the getScale() function to work.  I've tried:


var scale = '<%=MainMap.ClientID%>'.getScale();


var scale = <%=MainMap.ClientID%>.getScale();


var scale = ctl00_cphBody_MainMap.getScale();


and none of them seem to work.  

-Dustin



Dustin,



Actually, OpenLayers.Map supports getScale method; but '<%=MainMap.ClientID%>' is not OpenLayers object so that you cannot get the correct result. Please try the code below which helps you get the correct scale on the client side.

var scale=<%=Map1.ClientID%>.GetMapParser().map.getScale();


Please let me know if you have any questions.

Thanks,

Howard



Once again, thank you very much Howard.  I don’t know what I’d do with out you.   Is the above code documented anywhere?  I hate to keep bugging you with inane things like this, but I can’t seem to find that in the Client API or anywhere else on the forums.   
 -Dustin

Dustin,



You are fine; the following address links to our client APIs. General speaking, this documentation contains two parts. One is the APIs we wrapped from OpenLayers while another one is OpenLayers APIs. 

gis.thinkgeo.com/Support/Dis...fault.aspx



Please see the documents first and feel free to let me know if you have any questions.



Thanks,

Howard