возникли проблемы с кодировкой иврита в URL для запроса карт Google

1

У меня есть маленький R-код, который берет название города, которое я ему подаю, а затем вводит его в тип URL-запроса, который Google Maps может понять, а затем он дает мне координаты широты и долготы. Имена моего города на иврите!

Когда я использую "url encode" на этом сайте, а затем помещаю вывод в свой код, все работает хорошо. Но потом я подумал: зачем мне использовать этот сайт, когда я могу кодировать его по R в том же коде.

Так что я попробовал это, и apperantly - URLencode и все пакеты, которые я нашел в Интернете кодируют иначе, чем веб - сайт я уже упоминал. Например: я хочу кодировать название имени иврита: צפת

  • вывод с веб-сайта:

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

  • вывод из URLencode:

    %F6%F4%FA

Как я могу получить первую кодировку, которую использует веб-сайт? (Я пытался использовать RCurl и urltools, все безрезультатно..)

Код R это (я нашел его на этом сайте):

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)
}
Теги:
google-maps
urlencode

2 ответа

1
Лучший ответ

Итак, мне удалось найти ответ на мою проблему - мне пришлось изменить свой язык на "английский", потому что он был на "иврите". Sys.setlocale("LC_ALL","English")

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
    Спасибо за ваш ответ - в первую очередь я не знал о пакете googleway. Я использовал функцию. В любом случае мне удалось найти ответ на мою проблему - мне пришлось изменить свой язык на «английский», потому что он был на «иврите». Sys.setlocale("LC_ALL","English")
  • 0
    @Corel - вы должны добавить это как ответ, потому что это может помочь кому-то еще в будущем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню