ThinkGeo.com    |     Documentation    |     Premium Support

GoogleMapsOverlay trouble

Hello,


I have trouble with using GoogleMapsOverlay. When I include this overlay in my map, I get exception 


"Invalid length for a Base-64 char array.". 


I use   Key for browser apps (39 caracters)


            map.MapUnit = GeographyUnit.Meter;

            GoogleMapsOverlay googleOverlay = new GoogleMapsOverlay();

            googleOverlay.CacheDirectory=@"C:\GoogleCache";

            googleOverlay.PrivateKey = "AIzaSyBYITXujwls1FutZIR6ABakjnAYCd4Raet";

            googleOverlay.MapType = GoogleMapsMapType.Terrain;

            map.Overlays.Add(googleOverlay);


           map.Refresh();


       code throws exception on last line. Explain me pls where is my mistake?


Thanks!



Hi Anton,  
  
 Are you are setting up a ClientID as well? You don’t need to provide this to me in the post, but I believe you need to have this setup in your code.

Hi, Ryan!


Yes I pointed CientID like this:


googleOverlay.ClientId = "757303669999.apps.googleusercontent.com";


but exception the same ...



Hi Anton,  
  
 There seems to be a conflict with the length of the APIKey that Google provides and the length that the GoogleOverlay.PrivateKey expects. A Base64 needs to have a length with a multiple of 4 and Google’s APIKey has a length of 39 characters. This would seem to be a bug so I will be submitting this to the Internal Ticket system for additional review.

Hi Anton, 

 


The key you are passing into the PrivateKey parameter is actually a Google - Static Maps API - APIKey and the PrivateKey parameter requires a Google - PrivateKey.



The GoogleMapsOverlay only supports two licensing options for the Google - Static Maps API at this time. 

The first option simply uses the default GoogleMapsOverlay constructor that does not require any keys. This is the anonymous/free option and there are limits placed on these types of requests by Google. With this option you cannot see the number of requests made or get any reporting information within your Google Account about the requests made to the Static Maps API. 



The second option uses the GoogleMapsOverlay constructor that requires both a Private Key and a Client ID. This constructor is designed to be used with the Google Maps API for Business - Static Maps API that is described in details here: developers.google.com/maps/documentation/business/webservices#how_do_i_get_my_signing_key 

This option gives you the most flexibility in setting up limits, viewing reporting data, and has differnet limitations than the free Static Maps API access. When you sign up for this option Google will supply you with a Client ID but there are some additional steps in Google's documentation that you need to follow in order to get a signed 'Private Key'. 



Google provides a third option that is free but uses an API key that allows you to get basic reporting on the number of requests that the Static Maps API provides to your application and apparently provides some additional quota above what you get with the free/anonymous option. This is not a option that the GoogleMapsOverlay currently supports so at this time your only options are to use the free/anonymous option or the Business option that requires the ClientID and PrivateKey. 



We are looking into adding support for the API Key option but I don't have a timeline on when this might be available in the Desktop Edition.



Hi,



If you use GoogleMapsLayer instead of GoogleMapsOverlay, static API key works fine.



I hope this helps some users.

Hi Erdal, 
  
 Great to hear the problem is solved and thanks for your sharing. 
  
 if you have any more question , please feel free to let us know. 
  
 Best Regards 
  
 Summer