1 | plotCurrentTraffic(trafficURL = "http://resource.data.one.gov.hk/td/speedmap.xml")
|
trafficURL |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | ##---- Should be DIRECTLY executable !! ----
##-- ==> Define data, use random,
##-- or do help(data=index) for the standard data sets.
## The function is currently defined as
function (trafficURL = "http://resource.data.one.gov.hk/td/speedmap.xml")
{
if (require("leaflet", character.only = T, quietly = T) &
require("XML", character.only = T, quietly = T)) {
tdata <- XML::xmlParse(trafficURL)
tdata <- XML::xmlToDataFrame(tdata, stringsAsFactors = F)
tdata$ROAD_SATURATION_LEVEL <- gsub("TRAFFIC ", "", tdata$ROAD_SATURATION_LEVEL)
tdata$ROAD_SATURATION_LEVEL <- factor(tdata$ROAD_SATURATION_LEVEL)
tdata$CAPTURE_DATE <- strptime(tdata$CAPTURE_DATE, format = "%Y-%m-%dT%H:%M:%S")
pale <- c("green", "yellow", "red")
names(pale) <- c("GOOD", "AVERAGE", "BAD")
pale <- as.vector(pale[levels(tdata$ROAD_SATURATION_LEVEL)])
pal <- leaflet::colorFactor(pale, domain = tdata$ROAD_SATURATION_LEVEL)
roads = getRoads()
roads$dashPattern <- as.character(c(1, c("15, 10, 5"))[as.numeric(roads$route_type)])
roads <- subset(roads, route %in% tdata$LINK_ID)
roads@data <- cbind(roads@data, tdata[match(roads$route,
data$LINK_ID), ])
lastCaptureTime <- max(unique(tdata$CAPTURE_DATE))
lastCaptureTime <- strftime(lastCaptureTime, format = "%H:%M, %d %b")
leaflet(data = roads) %>% addTiles(group = "OSM (default)") %>%
addProviderTiles(providers$Stamen.Toner, group = "Toner") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Toner Lite") %>%
addPolylines(color = ~pal(ROAD_SATURATION_LEVEL),
dashArray = ~dashPattern, popup = ~paste0("average speed: ",
TRAFFIC_SPEED, " km/h"), label = ~route) %>%
addLegend(position = "bottomright", pal = pal, values = ~ROAD_SATURATION_LEVEL,
title = paste0("Road Saturation Level at ", lastCaptureTime),
labels = ~ROAD_SATURATION_LEVEL) %>% addLayersControl(baseGroups = c("OSM (default)",
"Toner", "Toner Lite"), options = layersControlOptions(collapsed = FALSE))
}
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.