get a range of ggmap that crosses longitude 180
library(ggmap)
mapwest <- get_map(location = c(left = -180, bottom = -40,right = -120,top = 20), source = "google", maptype = "terrain")
mapeast <- get_map(location = c(left = 110, bottom = -40,right = 180,top = 20), source = "google", maptype = "terrain")
## combine the images together (and then we'll reconstruct their class/metadata)
map <- as.raster(cbind(as.matrix(mapeast), as.matrix(mapwest)))
## get the class/metadata
atts <- attributes(mapeast)
## and modify it (in this case we only need long = -120 which is 240E)
bb <- atts$bb
bb$ur.lon <- 240
## put the metadata back together
atts$bb <- bb
## put the class/metadata back on the new image (not the formal way to construct but we're brave/foolish)
atts$dim <- dim(map)
attributes(map) <- atts
ggmap(map)