Intro

This code uses the package osrm to create drive time from a location defined by lat/long coordinates. Then, the polygon is displayed on a map using leaflet.
OSRM is a routing service based on OpenStreetMap data. The osrm package allows to compute distance (travel time and kilometric distance) between points and travel time matrices.

Installing packages

The installation of osrm requires the package devtools as it is a development project not yet official in CRAN. Install the packages used in this task by running the following:

devtools::install_github("rCarto/osrm")
Skipping install of 'osrm' from a github remote, the SHA1 (b22762a1) has not changed since last install.
  Use `force = TRUE` to force installation

Getting drive time polygons (isochrones)

In thios next step we select the starting point, 100 Chalmers Street, Surry Hills. A quick Google Maps search shows us the coordinates for this location: long = 151.207049 and lat = -33.886475.
The time intervals are defines in breaks: from 0 to 30 minutes with 5 minutes intervals.
The resulting object is a SpatialPolygonDataFrame.

iso <- osrmIsochrone(loc = c(151.207049, -33.886475), breaks = seq(from = 0,to = 30, by = 5))
class(iso)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"

Plotting the polygon

Now we take the polygon and plot onto a map using leaflet. But first we run a few lines to prepare the data:

# add drive time description to be later used as a legend
iso@data$drive_times <- factor(paste(iso@data$min, "to", iso@data$max, "min"))

# color palette for each area
factpal <- colorFactor(rev(heat.colors(5)), iso@data$drive_times)

Now we draw the map:

# draw map
leaflet() %>% 
                setView(151.207049, -33.886475, zoom = 11) %>%
                addProviderTiles("CartoDB.Positron", group="Greyscale") %>% 
                addMarkers(lng = 151.207049, lat = -33.886475, popup = "100 Chalmers Street") %>% 
                addPolygons(fill=TRUE, stroke=TRUE, color = "black",
                                        fillColor = ~factpal(iso@data$drive_times),
                                        weight=0.5, fillOpacity=0.2,
                                        data = iso, popup = iso@data$drive_times,
                                        group = "Drive Time") %>% 
                # Legend
                addLegend("bottomright", pal = factpal, values = iso@data$drive_time,   title = "Drive Time")

Results

The results can be validated by going into the OSRM Page.

LS0tDQp0aXRsZTogIkhvdyB0byBjcmVhdGUgZHJpdmUgdGltZSBwb2x5Z29ucyBpbiBSIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQphdXRob3I6IEVkLk1haWFAY2FkcmVvbi5jb20NCi0tLQ0KIyMjIEludHJvDQoNClRoaXMgY29kZSB1c2VzIHRoZSBwYWNrYWdlIGBvc3JtYCB0byBjcmVhdGUgZHJpdmUgdGltZSBmcm9tIGEgbG9jYXRpb24gZGVmaW5lZCBieSBsYXQvbG9uZyBjb29yZGluYXRlcy4gVGhlbiwgdGhlIHBvbHlnb24gaXMgZGlzcGxheWVkIG9uIGEgbWFwIHVzaW5nIGBsZWFmbGV0YC4gIA0KT1NSTSBpcyBhIHJvdXRpbmcgc2VydmljZSBiYXNlZCBvbiBPcGVuU3RyZWV0TWFwIGRhdGEuIFRoZSBgb3NybWAgcGFja2FnZSBhbGxvd3MgdG8gY29tcHV0ZSBkaXN0YW5jZSAodHJhdmVsIHRpbWUgYW5kIGtpbG9tZXRyaWMgZGlzdGFuY2UpIGJldHdlZW4gcG9pbnRzIGFuZCB0cmF2ZWwgdGltZSBtYXRyaWNlcy4NCg0KIyMjIEluc3RhbGxpbmcgcGFja2FnZXMNClRoZSBpbnN0YWxsYXRpb24gb2YgYG9zcm1gIHJlcXVpcmVzIHRoZSBwYWNrYWdlIGBkZXZ0b29sc2AgYXMgaXQgaXMgYSBkZXZlbG9wbWVudCBwcm9qZWN0IG5vdCB5ZXQgb2ZmaWNpYWwgaW4gQ1JBTi4NCkluc3RhbGwgdGhlIHBhY2thZ2VzIHVzZWQgaW4gdGhpcyB0YXNrIGJ5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZzogIA0KYGBge3IgcGFja2FnZXN9DQpkZXZ0b29sczo6aW5zdGFsbF9naXRodWIoInJDYXJ0by9vc3JtIikNCmxpYnJhcnkoIm9zcm0iKQ0KDQppbnN0YWxsLnBhY2thZ2VzKCJsZWFmbGV0IikNCmxpYnJhcnkoImxlYWZsZXQiKQ0KYGBgICANCg0KIyMjIEdldHRpbmcgZHJpdmUgdGltZSBwb2x5Z29ucyAoaXNvY2hyb25lcykNCkluIHRoaW9zIG5leHQgc3RlcCB3ZSBzZWxlY3QgdGhlIHN0YXJ0aW5nIHBvaW50LCAxMDAgQ2hhbG1lcnMgU3RyZWV0LCBTdXJyeSBIaWxscy4gQSBxdWljayBHb29nbGUgTWFwcyBzZWFyY2ggc2hvd3MgdXMgdGhlIGNvb3JkaW5hdGVzIGZvciB0aGlzIGxvY2F0aW9uOiBsb25nID0gMTUxLjIwNzA0OSBhbmQgbGF0ID0gLTMzLjg4NjQ3NS4gIA0KVGhlIHRpbWUgaW50ZXJ2YWxzIGFyZSBkZWZpbmVzIGluIGBicmVha3NgOiBmcm9tIDAgdG8gMzAgbWludXRlcyB3aXRoIDUgbWludXRlcyBpbnRlcnZhbHMuICANClRoZSByZXN1bHRpbmcgb2JqZWN0IGlzIGEgKlNwYXRpYWxQb2x5Z29uRGF0YUZyYW1lKi4NCg0KYGBge3IgcG9seWdvbnN9DQppc28gPC0gb3NybUlzb2Nocm9uZShsb2MgPSBjKDE1MS4yMDcwNDksIC0zMy44ODY0NzUpLCBicmVha3MgPSBzZXEoZnJvbSA9IDAsdG8gPSAzMCwgYnkgPSA1KSkNCmNsYXNzKGlzbykNCmBgYA0KDQojIyMgUGxvdHRpbmcgdGhlIHBvbHlnb24NCk5vdyB3ZSB0YWtlIHRoZSBwb2x5Z29uIGFuZCBwbG90IG9udG8gYSBtYXAgdXNpbmcgYGxlYWZsZXRgLiBCdXQgZmlyc3Qgd2UgcnVuIGEgZmV3IGxpbmVzIHRvIHByZXBhcmUgdGhlIGRhdGE6DQoNCmBgYHtyIG1hcHByZXB9DQojIGFkZCBkcml2ZSB0aW1lIGRlc2NyaXB0aW9uIHRvIGJlIGxhdGVyIHVzZWQgYXMgYSBsZWdlbmQNCmlzb0BkYXRhJGRyaXZlX3RpbWVzIDwtIGZhY3RvcihwYXN0ZShpc29AZGF0YSRtaW4sICJ0byIsIGlzb0BkYXRhJG1heCwgIm1pbiIpKQ0KDQojIGNvbG9yIHBhbGV0dGUgZm9yIGVhY2ggYXJlYQ0KZmFjdHBhbCA8LSBjb2xvckZhY3RvcihyZXYoaGVhdC5jb2xvcnMoNSkpLCBpc29AZGF0YSRkcml2ZV90aW1lcykNCmBgYA0KDQpOb3cgd2UgZHJhdyB0aGUgbWFwOg0KYGBge3IgbWFwLCBlY2hvPVRSVUV9DQojIGRyYXcgbWFwDQpsZWFmbGV0KCkgJT4lIA0KCQkJCXNldFZpZXcoMTUxLjIwNzA0OSwgLTMzLjg4NjQ3NSwgem9vbSA9IDExKSAlPiUNCgkJCQlhZGRQcm92aWRlclRpbGVzKCJDYXJ0b0RCLlBvc2l0cm9uIiwgZ3JvdXA9IkdyZXlzY2FsZSIpICU+JSANCgkJCQlhZGRNYXJrZXJzKGxuZyA9IDE1MS4yMDcwNDksIGxhdCA9IC0zMy44ODY0NzUsIHBvcHVwID0gIjEwMCBDaGFsbWVycyBTdHJlZXQiKSAlPiUgDQoJCQkJYWRkUG9seWdvbnMoZmlsbD1UUlVFLCBzdHJva2U9VFJVRSwgY29sb3IgPSAiYmxhY2siLA0KCQkJCQkJCQkJCWZpbGxDb2xvciA9IH5mYWN0cGFsKGlzb0BkYXRhJGRyaXZlX3RpbWVzKSwNCgkJCQkJCQkJCQl3ZWlnaHQ9MC41LCBmaWxsT3BhY2l0eT0wLjIsDQoJCQkJCQkJCQkJZGF0YSA9IGlzbywgcG9wdXAgPSBpc29AZGF0YSRkcml2ZV90aW1lcywNCgkJCQkJCQkJCQlncm91cCA9ICJEcml2ZSBUaW1lIikgJT4lIA0KCQkJCSMgTGVnZW5kDQoJCQkJYWRkTGVnZW5kKCJib3R0b21yaWdodCIsIHBhbCA9IGZhY3RwYWwsIHZhbHVlcyA9IGlzb0BkYXRhJGRyaXZlX3RpbWUsCXRpdGxlID0gIkRyaXZlIFRpbWUiKQ0KYGBgDQoNCiMjIyBSZXN1bHRzDQpUaGUgcmVzdWx0cyBjYW4gYmUgdmFsaWRhdGVkIGJ5IGdvaW5nIGludG8gdGhlIFtPU1JNIFBhZ2VdKGh0dHA6Ly9tYXAucHJvamVjdC1vc3JtLm9yZy8/ej0xMyZjZW50ZXI9LTMzLjg4NjIzOCUyQzE1MS4yMDY4MzAmbG9jPS0zMy44ODYyMzglMkMxNTEuMjA2ODMwJmhsPWVuJmFsdD0wKS4=