ThinkGeo.com    |     Documentation    |     Premium Support

Client Side zoomToExtent() goes to wrong extent

I am using the client side method zoomToExtent()


 


The problem is the map goes to a different extent, and if I then fire the getExtent() method, it returns a different extent than I set.


 


 zoomToExtent(bounds) where bounds are:


-120.201345


39.324485


-119.9422559


39.28384164


 


then after the map moves getExtent() returns:


-121.15449523926


39.897003173828


-120.84550476074


40.102996826172



Hello Eric, 
  
 Because we have 20 default zoomlevels, and each zoomlevel has certain scale, so once user zoom in or out or directly zoom to a extent, to avoid that is not a standard scale which will cause image become stretch, so we will snapped the map to the nearest default scale, I think this is why your extent has some small difference. 
  
 Regards, 
  
 Gary

I have thought about this, but the problem is that the desired extent doesn’t appear in the map at all, even after zooming out. 
  
 I have tried using the setCenter() method and the map is still not aligned properly.  It appears as though the map is somehow off.

Just to be clear, I don’t think this is due to snapping to a set zoomlevel, because the desired extent is not on the screen at all.

 Hello Eric,


 
 Thanks for the data, yes with the extent you provide, it can't be the snapped problem, the extent offset too many.
 
 But I have a question, in the getExtent() return value:
 
 -121.15449523926
  
  39.897003173828
  
  -120.84550476074
  
  40.102996826172
 
 The MaxY is smaller than MinY, how can this be a extent?
 
 Also, this is my test code, I can't recreate your problem, I set your first extent when map rendered, then zoom to that extent again in the client side, I got the right result.

Client code:



    function zoomto() {
         var extent = new OpenLayers.Bounds(-120.201345, 39.324485, -119.9422559, 39.28384164);
         Map1.ZoomToExtent(extent);
     }

Server code:



                Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));
                 Map1.CurrentExtent = new RectangleShape(-120.201345, 39.324485, -119.9422559, 39.28384164);
                 Map1.MapUnit = GeographyUnit.DecimalDegree;
 
                 WorldMapKitWmsWebOverlay worldMapKitOverlay = new WorldMapKitWmsWebOverlay();
                 Map1.CustomOverlays.Add(worldMapKitOverlay);

 Regards,
 
 Gary

 



Yes, I had foolishly trasposed my upper and lower bounds, this fixed the problem.  Sorry.  Thanks.

Hello Eric, 
  
 You are welcome, just let us know your problems. 
  
 Regards, 
  
 Gary