ThinkGeo.com    |     Documentation    |     Premium Support

Bounding boxes which cross the international date line results in a distorted shape tile

 We have been having some trouble getting shapes to display properly on Google Maps. We are constructing a WMSOverlay using Google's "new google.maps.ImageMapType(wmsOptions);" function. The wmsOptions takes a function "getTileUrl", which is the URL we are constructing to query the ThinkGeo map shapes server.


The coordinates passed to the server are the upper-left and lower-right points of the tile needed. However, if the user is looking at a region which spans the international date line (cuts Alaska and Russia), ThinkGeo's MapSuite.Core.RectangleShape gets confused and attempts to get obtain an image of the entire world and shrink it down into a tile, then drop it on the map.


 



The edges of the bounding box I'm sending look like this


MinLatitude: 0
MinLongitude: -90
MaxLatitude: 66.51326
MaxLongitude: 180
 
Any ideas on how to get around this? Client-side or server-side options are both appreciated.

 



Anil, 
  
 I investigated on your issue and found out this issue is not a problem with us, if you use the GoogleMapsOverlay, we just get the image from the google maps server and display it on our own map, also the projection is used 900913, it is the same as the google map, as you mentioned the Alaska and Russia were seems to be distorted, the reason is that under the 900913 projection, the map unit is meter, so the bounding box what you provided is very small and distort the shapes. 
  
 We will try to find out a way to resolve your problem, I just want to ask you that you must to use the GoogleMapOverlay? If that, it is difficult to get around it, because the Google Map has the same issue to you, please check the same place on maps.google.com, you can realize it. 
  
 Thanks, 
  
 Scott,

 Hi Scott,


I am working on the same team as Anil and I wanted to clarfy the issue a bit.  We are using Google Maps directly and then we are are hooking up into their tile overlay engine to retrieve the tiles.  Google Maps provides bounding box information such as southeast corner and nortwest corner of the tile.  We use that information to generate an image using ThinkGeo draw function.  The issue is that to generate an appropriate image, ThinkGeo.Draw needs RectangleShape specified for extents and RectangleShape expects parameters in min/max lat/lng combinations.  Google Maps when it comes to the area close to dateline can request a tile that crosses the dateline (as Anil described) so it will send parameters with lattitude on the left that's 180 and on the right -90.  Since RectangleShape takes min and max just send those parameters straight to RectangleShape throws an error, swapping them ends up in an error.


So the core of the problems seems to be that ThinkGeo can't generate an image that crosses dateline.  Is there any options that we can explore to get around this issue?  Is it something that ThinkGeo can address or is there some workaround?



Val, 
  
 I noticed that the latitude on the left is 180, that’s impossible, the biggest latitude value is 90 and the smallest latitude value is -90, I’m not sure where is latitude value from? If it is from the google maps service, please make sure about it first. If you used this latitude value to draw image, obviously, it would threw exception because the latitude value on left is out of the range. 
  
 Also I guessed you made a mistake to write the latitude, maybe you want to write longitude. If that, I want to tell you the right longitude value cannot be smaller than the left longitude value, you said the left value is 180 and right is -90, so it cannot pass the our validation. We cannot support the incorrect values such as this. 
  
 If I misunderstood anything or any more questions please let me know again, 
  
 Thanks, 
  
 Scott,