无法将希伯来语编码为谷歌地图查询的URL

时间:2017-09-13 13:11:44

标签: javascript json r google-maps urlencode

我有一个R代码,它采用我提供给它的城市名称,然后将其输入到Google地图可以理解的URL查询类型中,然后它为我提供纬度和经度坐标。我的城市名字都是希伯来语!

当我在this网站中使用“url encode”然后将输出放到我的代码中时,一切正常。但后来我心想 - 当我可以用相同的代码对R进行编码时,为什么我需要使用这个网站。

所以我尝试了,而且显然 - URLencode我在互联网上找到的所有软件包都比我提到的网站编码不同。例如: 我想对希伯来语城市名称进行编码:צפת

  • 网站输出:

    %D7%A6%D7%A4%D7%AA

  • URLencode的输出:

    %F6%F4%FA

如何获取网站使用的第一个编码? (我试图使用RCurlurltools,但都无济于事。)

R代码就是这样(我在this网站上找到了它):

getGeoCode <- function(gcStr)
{
  library("RJSONIO") # Load Library
  gcStr <- gsub(' ','%20',gcStr) # Encode URL Parameters
  # Open Connection
  connectStr <- paste('http://maps.google.com/maps/api/geocode/json?sensor=false&address=',gcStr, sep="") 
  con <- url(connectStr)
  data.json <- fromJSON(paste(readLines(con), collapse=""))
  close(con)
  # Flatten the received JSON
  data.json <- unlist(data.json)
  lat <- data.json["results.geometry.location.lat"]
  lng <- data.json["results.geometry.location.lng"]
  gcodes <- c(lat, lng)
  names(gcodes) <- c("Lat", "Lng")
  return (gcodes)
}

2 个答案:

答案 0 :(得分:1)

我没有看到您使用URLencode()描述的问题:

location <- "צפת"
URLencode(location)
# [1] "%D7%A6%D7%A4%D7%AA"

使用我的googleway包查询到Google工作

library(googleway)

apiKey <- ""

res <- google_geocode(address = location, key = apiKey)

res$results$formatted_address
# [1] "Safed, Israel"

res$results$address_components
# [[1]]
# long_name     short_name                                  types
# 1          Safed          Safed                    locality, political
# 2          Tzfat          Tzfat administrative_area_level_2, political
# 3 North District North District administrative_area_level_1, political
# 4         Israel             IL                     country, political

res$results$geometry$location
#        lat    lng
# 1 32.96465 35.496

答案 1 :(得分:1)

所以,我设法找到问题的答案 - 我不得不将我的语言环境改为“英语”,因为它是“希伯来语”。 Sys.setlocale("LC_ALL","English")