ThinkGeo.com    |     Documentation    |     Premium Support

Blank areas - Left and right

Hi,



We experience that every time MapSuite ask Google Maps for a map with a width more than 2048 wide, blank areas is showing on the left and right of the map:





Example:

Fail:

GET /maps/api/staticmap?center=56.203937,11.868734&zoom=11&size=2604x1543&maptype=hybrid&format=png32&sensor=false&client=

Returned from google: 2048x1543


Zoome once more using mouse wheel:


Valid:

GET /maps/api/staticmap?center=56.150452,11.816966&zoom=11&size=1562x926&maptype=hybrid&format=png32&sensor=false&client=

Returned from Google: 1562x926


Google can only return 2048 using our license and every time Mapsuite request a map bigger than 2048 in width, the problem is there.


Can this be resolved?



Kind regards

Jesper Friis

SEGES



Code used for example:



WindowState = FormWindowState.Maximized;

m_Map.MapUnit = GeographyUnit.Meter;

m_Map.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.StandardColors.Red);

GoogleMapsLayer worldLayer = new GoogleMapsLayer();

worldLayer.ClientId = SomeClientId

worldLayer.PrivateKey = SomePrivateKey


worldLayer.MapType = GoogleMapsMapType.Hybrid;

worldLayer.TileMode = GoogleMapsTileMode.SingleTile;

worldLayer.PictureFormat = GoogleMapsPictureFormat.Png32;

   

LayerOverlay worldOverlay = new LayerOverlay();

worldOverlay.Name = “WorldOverlay”;

worldOverlay.IsVisible = true;

worldOverlay.Layers.Add(“WorldLayer”, worldLayer);


GoogleMapsZoomLevelSet zoomLevelSet = new GoogleMapsZoomLevelSet();

zoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

m_Map.ZoomLevelSet = zoomLevelSet;


m_Map.Overlays.Insert(0, worldOverlay);

m_Map.ZoomLevelSnapping = ZoomLevelSnappingMode.None;


var m_GoogleMapProjection = new Proj4Projection();

m_GoogleMapProjection.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(25832);

   m_GoogleMapProjection.ExternalProjectionParametersString = 

Proj4Projection.GetGoogleMapParametersString();

m_GoogleMapProjection.Open();


var m_MaxExtent = new RectangleShape(440000, 6406000, 895000, 6041000); // minX, maxY, maxX, minY - Denmark


m_Map.CurrentExtent = m_GoogleMapProjection.ConvertToExternalProjection(m_MaxExtent);

m_Map.Refresh();





Hi Jesper, 
  
 Thanks for your detail information, for get best render effect, please choose MultiTile mode, you can just comment worldLayer.TileMode = GoogleMapsTileMode.MultiTile; and it will shows better. 
  
 Regards, 
  
 Don

Hi,



We have tried MultiTile and the performance is better and no showing of blank areas, etc. …BUT Google logo is showing on every tile (640x640) it is generating and therefore it looks rather hideous. 



We need a solution for  SingleTile unless the copyright can be removed from the tiles in MultiTile mode?



Are you planning to implement and use Google Maps API 3 ?



Kind Regards

Jesper Friis

Hi Jesper, 
  
 We are using static API for desktop edition, it looks it’s latest version is 2, only JavaScript version is 3. 
  
 I read the documentation, it looks the biggest tile provided by Google is 2048, so for singleTileMode we cannot get bigger tile for that. 
  
 developers.google.com/maps/documentation/staticmaps/ 
  
 Sorry we cannot remove copyright, but could you please tried to set 512 to TileWidth and TileHeight in MultiTile mode, so that the copyright number will be reduced.  
  
 Regards, 
  
 Don 


Hi Don, 



Thanks for your answer. 

 

We have tried your suggestion regarding setting TileMode to MultiTile. However this solution for removing the blank areas is not satisfying, since we do not want to see Google’s copyright information for every single tile.



Using the SingleTile mode is a ok solution, except for the blank areas…. 



As described earlier  the problem only occurs when MapSuite ask for a map with a width more than 2048 wide and in this situation It seems to me like there is some internal calculation that goes wrong in Mapsuite? E.g. if MapSuite ask for 2594w x 1537h, Google returns: 2048w x 1537h. The difference between the 2594w asked for and the 2048w returned from google seems to be equal to the blank areas divided by 2, in this case = 546/2.



Kind regards

Jesper

One more item regarding this:



Jesper asks about quite big images here. Probably for printing. But we have another issue when the map is shown on-screen. As we ask for specific zooms with a window size of e.g. 1700 by 800, then the request going to Google is something like 2200 by 800. We can’t find an explanation for this, but the reguest is Again satisfied by returning an image cropped to 2048 pixels wide, thus giving us blank areas near the edges.

How come that MapSuite asks for too large images in this scenario?



Best regards

Keld Laursen

Hi, 
  
 Is there any news on the issues from January 16? 
  
 Kind regards 
 Jesper

Hi Jesper, 
  
 Sorry for the delay, because Don is in vacation currently and he is not available to answer your question. 
  
 The Google’s static API requires center and zoom as parameters. And the Zoom is type of integar. While our map control is not always equal to Google’s zoom when zooming in/out. For example, we allow to zoom to zoom 4.7. In this case, google doesn’t support to return an image at zoom 4.7. We need to manually snap our zoom 4.7 to Google’s nearest zoom level which is level 5. In this case, we need to request a larger image; then shrink this image to fill the map viewport. On the other hand, for example, if our current extent is at zoom 4.3, we might need to request a smaller image and stretch it to fill current map viewport. So the requesting size you mentioned is not exactly match the map’s size. Hope it makes sense to you.  
  
 I think Don’s option is right, use multiple tile + larger tile size could fix the blank area and reduce the count of Google’s logo. The SingleTile will have only one tile but will have blank area if the viewport is too large. Getting rid of the logo is not allowed by Google’s.  
  
 Another possible option which might not good is that, we could generate a larger image for a tile, and cut off the logo area. In this case, we could use multi-tile and left only one logo visible in the lower right corner. We are not sure if it is allowed by Google. So I said it’s a possible option. 
  
 Thanks and feel free to let us know if you have more queries, 
 Howard