Dieses Problem ist in der Funktion get_map()
(ggmap
) in R. aufgetreten.
Mein Code wurde für mehrere Monate ohne die Angabe eines API-Schlüssels (für source = "google"
) ausgeführt. Der Code funktionierte jedoch vor ein paar Wochen nicht mehr. Ich habe verstanden, dass Google den API-Schlüssel obligatorisch gemacht hat (oder sie erlaubten möglicherweise eine bestimmte Anzahl von Anrufen ohne den von mir erschöpften API-Schlüssel).
Selbst nach Angabe des API-Schlüssels (erhalten von Google Cloud Platform) veränderte sich mein Code jedoch weiterhin. Ich habe sogar den Google Cloud-Support kontaktiert, aber der API-Schlüssel per se war fehlerhaft, und die Karte konnte an ihrem Ende aufgerufen werden.
Ich vermute, dass die get_map()
-Funktion nicht den api_key
beim Aufrufen der Karte von Google übergibt. Jeder Hinweis auf eine Lösung wäre dankbar.
Unten ist der reproduzierbare Code (der fehlschlägt).
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
)
Und unten ist die Fehlermeldung in R (beachten Sie, dass der API-Schlüssel nicht übergeben wird).
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'
Sie müssen register_google(key = "..."
) in jeder neuen Sitzung von R verwenden. Die Verwendung von api_key =
im Aufruf von get_map()
funktioniert nicht.
aktualisiert am: 2018-12-24 für ggmap 2.7.904 und aktuelle Google Cloud-API
require(devtools)
devtools::install_github("dkahle/ggmap", ref = "tidyup")
Link für weitere Informationen zum Erhalten eines API-Schlüssels
APIs, die Sie benötigen: Maps Static und Geocoding
Aktivieren Sie billing in den allgemeinen Einstellungen.
library(ggmap)
register_google(key = "...") # copied directly from Google Console via 'copy' button
ggmap(get_googlemap())
ggmap(get_map("Hannover, Germany"))
Wenn Sie hier eine Fehlermeldung erhalten (z. B. Forbidden 403), haben Sie Ihren Schlüssel höchstwahrscheinlich nicht für die richtigen APIs aktiviert. Tutorial zur Fehlerbehebung bei Geokodierungen
ggmap(get_map(location=c(16.3738,48.2082), zoom=13, scale=2))
Nur um Roman Abashins Antwort hinzuzufügen (leider kann ich nicht kommentieren): Gemäß '? Get_map ()' funktioniert das Argument 'api_key =' nicht für Google Maps. Sie müssen die Funktion 'register_google ()' verwenden. Ab dem 10.03.18 ist dies jedoch nur in der Entwicklungsversion von ggmap möglich, die Sie wie folgt erhalten können:
devtools::install_github("dkahle/ggmap", ref = "tidyup")
Dann müssen Sie auch die Abrechnung für Ihr Google-Konto aktivieren. Die ersten 100.000 Karten, die Sie jeden Monat verwenden, sollten kostenlos sein. Weitere Informationen finden Sie hier: https://cloud.google.com/maps-platform/pricing/sheet/ für Details.
(Tipps von hier: https://github.com/dkahle/ggmap/issues/51 )
Ich kenne die direkte Lösung des Problems ggmap
nicht. Wenn Sie jedoch lieber mit einer interaktiven Karte als mit einer statischen Karte arbeiten, können Sie meine googelway
-Bibliothek verwenden
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)
Hinzufügen von @ Roman's Antwort, hier der Code, der für mich funktioniert hat:
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")
Weitere Informationen finden Sie auf der Bibliotheksseite von github: hier
Hoffentlich hilft es!