library(overpass)
## Data (c) OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright
library(osmdata)
## Data (c) OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright
## 
## Attaching package: 'osmdata'
## The following objects are masked from 'package:overpass':
## 
##     add_feature, available_features, available_tags,
##     bbox_to_string, opq, overpass_status
library(sp)

ll <- c("Trieste","Muggia")
ll <- c("Servola")
BB <- sapply(ll, getbb)
bb <- c(min(BB[2,]), min(BB[1,]), max(BB[4,]), max(BB[3,]))
bbstring <- paste(bb,collapse=",")

vv <- c("motorway","motorway junction","motorway link",
        "primary","primary link","residential","road",
        "secondary","secondary link","tertiary","tertiary link",
        "trunk","trunk link","unclassified")
q1 <- paste0('  way["highway"="',vv,'"](',bbstring,');', collapse='\n')
qq <- paste0('[out:xml][timeout:25]; \n( \n',q1,'); \nout body; \n>; \nout skel qt;')
write(qq, file = "query.txt")

oo <- overpass_query(qq)
## Issuing query to OSM Overpass...
## 2 slots available now.
## [1] "2 slots available now."
## Query complete!
oo@data$tunnel[is.na(oo@data$tunnel)] <- "no"
plot(oo, col=factor(oo@data$highway), lty=(oo@data$tunnel=="yes")+1)
legend(x = "right", legend = unique(oo@data$highway), 
       col=unique(factor(oo@data$highway)),
       lty=1, cex = 0.7)