R/get_long_lat_Baidu.R

Defines functions get_long_lat_Baidu

Documented in get_long_lat_Baidu

#' 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)
Gabegit/gmdata documentation built on May 6, 2019, 5:32 p.m.