require(maps)
## Loading required package: maps
require(mapdata)
## Loading required package: mapdata
library(ggplot2)
library(ggrepel)
cities = c("Beijing","Shanghai")
global <- map_data("world") 
## Antarctica is missing the two dummy points
## which is a problem/solution in maps because of older topological-uses now completely
## foreign to most common denominator spatial forms
gg1 <- ggplot() + geom_polygon(data = global, aes(x=long, y = lat, group = group), fill = "green", color = "blue") + coord_fixed(1.3)
gg1

coors <- data.frame( long = c(122.064873,121.4580600), lat = c(36.951968,31.2222200),
                     stringsAsFactors = FALSE
)

## the problems seen here http://www.datasciencecentral.com/profiles/blogs/creating-maps-in-r-using-ggplot2-and-maps-libraries?utm_content=bufferc747e&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer
## are because of the use of xlim/ylim in isolation, they can be used to not crop-naively within
## coord_cartesian

coors$cities <- cities 
gg1 + geom_point(data=coors, aes(long, lat), colour="red", size=1) +
  ggtitle("World Map") +
  geom_text_repel(data=coors, aes(long, lat, label=cities)) + coord_cartesian(xlim = c(0,150), ylim = c(0,100) )

cities = c("Paris","Berlin")
coors <- data.frame(
  lat = c(48.864716,52.520008),
  long = c(2.349014,13.404954),
  stringsAsFactors = FALSE
)

coors$cities <- cities
gg1 +
  geom_point(data=coors, aes(long, lat), colour="red", size=1) +
  ggtitle("World Map") +
  geom_text_repel(data=coors, aes(long, lat, label=cities)) + coord_cartesian(xlim = c(-10,40), ylim = c(35,60))