#' get longitude and latitude from Baidu API
#' @param place vector
#' @return a data frame with long and lat
#' @export
#' @seealso get_long_lat()
#' @examples
#' get_long_lat_Baidu("南昌")
#' get_long_lat_Baidu(c("长沙","南昌","郑州","武汉","太原"))
#'
get_long_lat_Baidu <- function(cities_name){
# make an empty dataframe
mydata = data.frame(cities = cities_name,lon = NA, lat = NA,stringsAsFactors = FALSE)
#print(mydata)
# loop every city
for (i in seq_along(cities_name)){
#print(i)
# change words into url quote
i_quote <- URLencode(cities_name[i])
# ak=K4LiuU7GA3dqbsjH04b2AobD(my baidu ak)
url = paste0("http://api.map.baidu.com/geocoder/v2/?address=",i_quote,"&output=json&ak=K4LiuU7GA3dqbsjH04b2AobD")
#print(url)
# fetching the data
rawdata <- readLines(url,warn = "F")
jsondata <- jsonlite::fromJSON(rawdata)
# extracing the long and lat data
longitude <- as.numeric(jsondata$result$location$lng)
latitude <- as.numeric(jsondata$result$location$lat)
#print(c(cities_name[i],longitude,latitude))
# note: c(string,numeric) will be a string vector
mydata[i,2:3] <- c(longitude,latitude)
#print(mydata)
}
print("Please check my data")
return(mydata)
}
# testing
# citiename = c("长沙","南昌","郑州","武汉","太原")
#
# c = get_long_lat_Baidu(citiename)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.