J'ai été confronté à ce problème dans la fonction get_map()
(bibliothèque ggmap
) dans R.
Mon code était en cours d'exécution sans qu'il soit nécessaire de spécifier une clé d'API (pour source = "google"
) pendant plusieurs mois. Cependant, le code a cessé de fonctionner il y a quelques semaines. J'ai compris que Google a rendu la clé API obligatoire (ou peut-être ont-ils autorisé un certain nombre d'appels sans la clé API que j'ai épuisée).
Cependant, même après avoir spécifié la clé API (obtenue auprès de Google Cloud Platform), mon code a continué à se comporter de la même manière. J'ai même contacté le service d'assistance Google Cloud, mais ils ont déclaré que la clé API en soi ne posait aucun problème et qu'ils étaient en mesure d'invoquer la carte.
Je soupçonne que la fonction get_map()
ne transmet pas le api_key
lors de l'appel de la carte depuis Google. Tous les indicateurs de résolution seraient appréciés.
Ci-dessous, le code reproductible (qui échoue).
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
)
Et ci-dessous se trouve le message d'erreur dans R (notez que la clé API n'est pas transmise)
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'
Vous devez utiliser register_google(key = "..."
) dans chaque nouvelle session de R. Utiliser api_key =
dans l'appel get_map()
ne fonctionne pas.
mis à jour: 2018-12-24 pour ggmap 2.7.904 et l'API Google Cloud actuelle} _
require(devtools)
devtools::install_github("dkahle/ggmap", ref = "tidyup")
Lien direct vers les informations de tarification de l'API Google Maps
API dont vous avez besoin: Maps Static et Geocoding
Activez facturation dans les paramètres généraux.
library(ggmap)
register_google(key = "...") # copied directly from Google Console via 'copy' button
ggmap(get_googlemap())
ggmap(get_map("Hannover, Germany"))
Si vous obtenez une erreur ici (par exemple, Forbidden 403), vous n'avez probablement pas activé votre clé pour les bonnes API. Tutoriel de dépannage du géocodage
ggmap(get_map(location=c(16.3738,48.2082), zoom=13, scale=2))
Juste pour ajouter à la réponse de Roman Abashin (je ne peux malheureusement pas commenter): comme pour '? Get_map ()', l'argument 'api_key =' ne fonctionne pas pour Google Maps. Vous devrez utiliser la fonction 'register_google ()', mais à partir du 03/10/18, c'est uniquement dans la version de développement de ggmap, que vous pouvez obtenir comme ceci:
devtools::install_github("dkahle/ggmap", ref = "tidyup")
Ensuite, vous devrez également activer la facturation sur votre compte Google. Les 100 000 premières cartes que vous utiliserez chaque mois devraient être gratuites. Voir ici: https://cloud.google.com/maps-platform/pricing/sheet/ pour plus de détails.
(conseils tirés d'ici: https://github.com/dkahle/ggmap/issues/51 )
Je ne connais pas la résolution directe du problème ggmap
, mais si vous souhaitez utiliser une carte interactive plutôt que statique, vous pouvez utiliser ma bibliothèque googelway
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)
En ajoutant simplement à la réponse de @ Roman, voici le code qui a fonctionné pour moi:
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")
Pour plus d'informations, vous pouvez vous référer à la page de la bibliothèque sur github: ici
J'espère que ça aide!