get_map не передает ключ API (HTTP-статус «403 Forbidden») - PullRequest
0 голосов
/ 29 сентября 2018

Я сталкивался с этой проблемой в функции get_map() (библиотека ggmap) в R.

Мой код выполнялся без необходимости указывать ключ API (для source = "google") для несколькихмесяцы.Однако код перестал работать пару недель назад.Я понял, что Google сделал ключ API обязательным (или, возможно, они допустили определенное количество вызовов без ключа API, который я исчерпал).

Однако даже после указания ключа API (полученного из Google Cloud Platform) мой код продолжал работать так же.Я даже связался со службой поддержки Google Cloud, но они сказали, что в самом ключе API нет ничего плохого, и они смогли вызвать карту в конце.

Я подозреваю, что функция get_map() не передает api_key при вызове карты из Google.Любые указатели на разрешение будут оценены.

Ниже приведен воспроизводимый код (который не работает).

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
)

Ниже приведено сообщение об ошибке в R (обратите внимание, что ключ API не передается)

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'

Ответы [ 4 ]

0 голосов
/ 17 октября 2018

Просто добавив к ответу @ Roman вот код, который работал для меня:

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")

Для получения дополнительной информации вы можете обратиться к странице библиотеки на github: здесь
Надеюсь, это поможет!

0 голосов
/ 03 октября 2018

Вам необходимо использовать register_google(key = "...") в каждом новом сеансе R. Использование api_key = внутри вызова get_map() не работает.


обновлено: 2018-12-24 для ggmap 2.7.904 и текущего Google Cloud API

Пошаговое руководство

1.Обновление до последней версии ggmap

require(devtools)
devtools::install_github("dkahle/ggmap", ref = "tidyup")

2.Активируйте свой ключ API Google для всех API в консоли Google Cloud

enter image description here

enter image description here

3.Загрузите ggmap и зарегистрируйте ключ

library(ggmap)
register_google(key = "...")     # copied directly from Google Console via 'copy' button

4.Карта участка по умолчанию

ggmap(get_googlemap())          

Houston

5.График с названием местоположения (геокодирование)

ggmap(get_map("Hannover, Germany"))

Если вы получили здесь ошибку (например, Forbidden 403), вы, скорее всего, не активировали свой ключ для правильных API. Учебник по устранению неполадок геокодирования

Hannover

6.Участок с долготой и широтой

ggmap(get_map(location=c(16.3738,48.2082), zoom=13, scale=2))

3

0 голосов
/ 03 октября 2018

Просто добавлю к ответу Романа Абашина (к сожалению, я не могу комментировать): Согласно '? Get_map ()', аргумент 'api_key =' не работает для карт Google.Вам нужно будет использовать функцию 'register_google ()', но с 10/03/18 она есть только в разрабатываемой версии ggmap, которую вы можете получить так:

devtools::install_github("dkahle/ggmap", ref = "tidyup")

Тогда выВам также нужно будет включить выставление счетов в вашей учетной записи Google, хотя первые 100 000 карт, которые вы используете каждый месяц, должны быть бесплатными, подробности см. здесь: https://cloud.google.com/maps-platform/pricing/sheet/.

(подсказки приведены здесь: https://github.com/dkahle/ggmap/issues/51)

0 голосов
/ 29 сентября 2018

Я не знаю прямого разрешения проблемы ggmap, но если вы хотите работать с интерактивной картой, а не со статической, вы можете использовать мою библиотеку 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)

enter image description here

...