您正在尋找這樣的:使用谷歌地圖
library(ggmap)
from <- 'Paris'
to <- 'London'
mapdist(from,to,mode='driving')
from to m km miles seconds minutes hours
1 Paris London 454416 454.416 282.3741 18283 304.7167 5.078611
mapdist
計算地圖的距離。
要回答你的問題,我認爲使用json版本的google API比使用XML更容易(甚至推薦)。
這裏使用RJSONIO
的快速版本。即使我建議你使用上面的功能。由於結果已經過幾小時,因此無需進行任何轉換。
library(RJSONIO)
distHoras <- function(origin, destinations){
origin <- gsub(",", "", origin)
origin <- gsub(" ", "+", origin)
origin <- paste("origins=", origin, sep = "")
destinations <- gsub(",", "", destinations)
destinations <- gsub(" ", "+", destinations)
destinations <- paste("destinations=", paste(destinations,
collapse = "|"), sep = "")
mode4url <- paste("mode=", 'driving', sep = "")
lang4url <- paste("language=", 'en-EN', sep = "")
sensor4url <- paste("sensor=", tolower(as.character(FALSE)),
sep = "")
posturl <- paste(origin, destinations, mode4url, sensor4url,
sep = "&")
url_string <- paste("http://maps.googleapis.com/maps/api/distancematrix/json?",
posturl, sep = "")
url_string <- URLencode(url_string)
connect <- url(url_string)
tree <- fromJSON(paste(readLines(connect), collapse = ""))
close(connect)
rapply(tree$rows,I)
}
現在你測試一下:
distHoras('Paris','London')
elements.distance.text elements.distance.value elements.duration.text
"454 km" "454416" "5 hours 5 mins"
elements.duration.value elements.status
"18283" "OK"
酷,我不知道這個功能存在。像魅力一樣工作,謝謝!儘管如此,我仍然想知道如何調整我提供的手工功能。 –
@wleoncio研究mapdist代碼是一個很好的練習。你可以看到我的編輯小版本。 – agstudy
感謝您的提示,我很快就會把我的牙齒掉進去。 –