Я пытаюсь получить широту/долготу из Google Geocoding API, но запрос не выполняется, когда в адресе присутствуют датские местные символы. Я подозреваю, что это потому, что функция httr::GET кодирует URL-адрес, но я не совсем уверен, прав ли я.
Если вы скопируете/вставите эту ссылку прямо в браузер, вы получите действительный результат: http://maps.googleapis.com/maps/api/geocode/json?address=Søholmen+9,+4500+Дания
Но приведенный ниже код недействителен, даже если URL-адрес тот же, прежде чем он будет проанализирован в функции GET. Это работает, если я использую адрес без моих местных символов.
library(httr)
library(jsonlite)
library(stringr)
address <- "Søholmen 9, 4500 Denmark"
# address <- "Kronprinsesse Sofies Vej 6, 2000 Denmark"
base_url <- "http://maps.googleapis.com/maps/api/geocode/json?"
# An address OR components
geo_url <- paste0(base_url, "address=", str_replace_all(address, pattern = " ", replacement = "+"))
# Get the result
# get the content
# Parse the JSON
temp_geo_results <- httr::GET(url = URLencode(URL = geo_url), verbose())
temp_geo_results <- httr::content(temp_geo_results, as = "text")
temp_geo_results <- jsonlite::fromJSON(temp_geo_results)
Вот моя информация о сеансе ()
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=Danish_Denmark.1252 LC_CTYPE=Danish_Denmark.1252 LC_MONETARY=Danish_Denmark.1252
[4] LC_NUMERIC=C LC_TIME=Danish_Denmark.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] stringr_0.6.2 jsonlite_0.9.10 httr_0.5
loaded via a namespace (and not attached):
[1] RCurl_1.95-4.3 tools_3.1.2
РЕДАКТИРОВАТЬ: я удалил строку кода, не необходимую для вопроса, и добавил свой файл sessionInfo.
http://maps.googleapis.com/maps/api/geocode/json?address=S%C3%B8holmen+9,+4500+Denmark
Таким образом, вы можете закодировать вручную, как предложил @KERO, и тогда это сработает. - person LauriK   schedule 02.03.2015