Clustering cities on different zooms, and define a main city for each cluster (this city is visible on map with given zoom level).
Clustering algorithm: https://developers.google.com/maps/articles/toomanymarkers#markerclusterer
Some useful formulas: http://www.movable-type.co.uk/scripts/latlong.html