I have been facing this issue in the get_map()
function (ggmap
library) in R.
My code was running without the need to specify an API key (for source = "google"
) for several months. However, the code stopped working a couple of weeks back. I understood that Google has made the API key mandatory (or maybe they allowed a certain no of calls without the api key which I exhausted).
However, even after specifying the API key (obtained from Google Cloud Platform) my code continued behaving the same way. I even contacted Google Cloud Support, but they said there was nothing wrong with the API key per se and they were able to invoke the map at their end.
I suspect the get_map()
function is not passing the api_key
while invoking the map from Google. Any pointers towards resolution would be appreciated.
Below is the reproducible code (that is failing).
library(ggmap)
lat <- c(4,41) # India lat boundaries
lon <- c(68,99) # India long boundaries
center = c(mean(lat), mean(lon))
map <- get_map(location = c(lon = mean(lon),
lat = mean(lat)),
api_key = <my api key>,
zoom = 6,
maptype = "terrain",
source = "google",
messaging = TRUE
)
And below is the error message in R (note the API key is not getting passed)
trying URL 'http://maps.googleapis.com/maps/api/staticmap?center=22.5,83.5&zoom=6&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false'
Error in download.file(url, destfile = tmp, quiet = !messaging, mode = "wb") :
cannot open URL 'http://maps.googleapis.com/maps/api/staticmap?center=22.5,83.5&zoom=6&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false'
In addition: Warning message:
In download.file(url, destfile = tmp, quiet = !messaging, mode = "wb") :
cannot open URL 'http://maps.googleapis.com/maps/api/staticmap?center=22.5,83.5&zoom=6&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false': HTTP status was '403 Forbidden'
You need to use register_google(key = "..."
) in every new session of R. Using api_key =
inside the get_map()
call does not work.
updated: 2018-12-24 for ggmap 2.7.904 and current Google Cloud API
require(devtools)
devtools::install_github("dkahle/ggmap", ref = "tidyup")
Link for more info on how to get an API key
Direct Link to Google Cloud Platform Console
Direct Link to Google Maps API Pricing Information
APIs you need: Maps Static and Geocoding
Enable billing in the general settings.
library(ggmap)
register_google(key = "...") # copied directly from Google Console via 'copy' button
ggmap(get_googlemap())
ggmap(get_map("Hannover, Germany"))
If you get an error here (e.g., Forbidden 403) you most probably have not activated your key for the right APIs. Tutorial to troubleshoot geocoding
ggmap(get_map(location=c(16.3738,48.2082), zoom=13, scale=2))
I don't know the direct resolution to the ggmap
issue, but if you're happy to work with an interactive map rather than a static one you can use my googelway
library
library(googleway)
set_key("GOOGLE_MAP_KEY")
lat <- c(4,41) #India lat boundaries
lon <- c(68,99) #India long boundaries
center = c(mean(lat), mean(lon))
google_map(location = center, zoom = 6)
Just to add to Roman Abashin's answer (I can't comment, unfortunately): As per '?get_map()', the 'api_key =' argument doesn't work for Google maps. You'll need to use the 'register_google()' function, but as of 03/10/18, it's only in the development version of ggmap, which you can get like so:
devtools::install_github("dkahle/ggmap", ref = "tidyup")
Then you'll also need to enable billing on your Google account, though the first 100,000 maps you use each month should be free, see here: https://cloud.google.com/maps-platform/pricing/sheet/ for details.
(tips drawn from here: https://github.com/dkahle/ggmap/issues/51)
Just adding to @Roman's response, here's the code that worked for me:
if(!requireNamespace("devtools")) install.packages("devtools")
devtools::install_github("dkahle/ggmap", ref = "tidyup")
library(ggmap)
register_google(key = "your_API_key")
usa<- get_googlemap(location='united states', zoom=4,maptype = "hybrid")
For more information you could refer to the library page on github: here
Hopefully it helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With