3 added 1621 characters in body
source | link

Update (15 FEB 2017)

In the light of new geo-functionality developments I would like to add another approach via GeoImage. Consider the magnitude of the geomagnetic field across the entire planet. Get the data:

data = QuantityMagnitude[
   GeomagneticModelData[{{-90, -180.}, {90, 180.}}, "Magnitude", 
    GeoZoomLevel -> -2]];

Build high-res contour plot:

plot = ListContourPlot[data, PlotRangePadding -> 0, 
  ColorFunction -> "TemperatureMap", Frame -> False, 
  InterpolationOrder -> 2, ImageSize -> 800, Contours -> 20, 
  ContourStyle -> Opacity[.2]]

enter image description here

Specify how you would like to place this rectangle on the map (we use world range to show the application of geo-projection too):

GeoGraphics[{GeoStyling[{"GeoImage", plot}, 
   GeoRange -> {{-90, 90}, {-180, 180}}], Opacity[0.6], 
  GeoBoundsRegion["World"]}, GeoRange -> "World", 
 GeoProjection -> "Robinson"]

enter image description here

Colored background interferes with colors of the heat map. Use just coastlines:

GeoGraphics[{
  GeoStyling[{"GeoImage", plot}, 
   GeoRange -> {{-90, 90}, {-180, 180}}], Opacity[.8], 
  GeoBoundsRegion["World"]}, GeoRange -> "World", 
 GeoProjection -> "Robinson", GeoBackground -> 
{"Coastlines", "Land" -> White, "Ocean" -> White, "Border" -> Black}]

enter image description here

Older versions

Update (15 FEB 2017)

In the light of new geo-functionality developments I would like to add another approach via GeoImage. Consider the magnitude of the geomagnetic field across the entire planet. Get the data:

data = QuantityMagnitude[
   GeomagneticModelData[{{-90, -180.}, {90, 180.}}, "Magnitude", 
    GeoZoomLevel -> -2]];

Build high-res contour plot:

plot = ListContourPlot[data, PlotRangePadding -> 0, 
  ColorFunction -> "TemperatureMap", Frame -> False, 
  InterpolationOrder -> 2, ImageSize -> 800, Contours -> 20, 
  ContourStyle -> Opacity[.2]]

enter image description here

Specify how you would like to place this rectangle on the map (we use world range to show the application of geo-projection too):

GeoGraphics[{GeoStyling[{"GeoImage", plot}, 
   GeoRange -> {{-90, 90}, {-180, 180}}], Opacity[0.6], 
  GeoBoundsRegion["World"]}, GeoRange -> "World", 
 GeoProjection -> "Robinson"]

enter image description here

Colored background interferes with colors of the heat map. Use just coastlines:

GeoGraphics[{
  GeoStyling[{"GeoImage", plot}, 
   GeoRange -> {{-90, 90}, {-180, 180}}], Opacity[.8], 
  GeoBoundsRegion["World"]}, GeoRange -> "World", 
 GeoProjection -> "Robinson", GeoBackground -> 
{"Coastlines", "Land" -> White, "Ocean" -> White, "Border" -> Black}]

enter image description here

Older versions

2 added 644 characters in body
source | link

Well I do not have your data, so I'll just show things I have. I'll go with India, it has nice cities layout. You can upgrade for your data yourself. If you know only locations of cities, but not their population, then

data = DeleteCases[
   Reverse[CityData[#, "Coordinates"]] & /@ CityData[{All, "India"}], 
Missing["NotAvailable"]];

Show[SmoothDensityHistogram[data, .3, ColorFunction -> "SunsetColors",
   PlotPoints -> 150, Mesh -> 20, MeshStyle -> Opacity[.1], PlotRange -> All], 
 Graphics[{FaceForm[], EdgeForm[Directive[White, Opacity[.7]]], 
   CountryData["India", "Polygon"]}]]

enter image description here

If you know the population, then maybe something like this:

Graphics[{Opacity[0.1, Blue], 
  Cases[Disk[Reverse[CityData[#, "Coordinates"]], 
      Log[10.^12, CityData[#, "Population"]]] & /@ 
    CityData[{All, "India"}], Disk[{__Real}, _Real]], {FaceForm[], 
   EdgeForm[Directive[Red, Thick, Opacity[.9]]], 
   CountryData["India", "Polygon"]}}, Background -> Black]

enter image description here

For US use something like:

data = DeleteCases[Reverse[CityData[#, "Coordinates"]] & /@ 
    CityData[{All, "UnitedStates"}], Missing["NotAvailable"]];
Show[SmoothDensityHistogram[data, .5, ColorFunction -> "SunsetColors",
   PlotPoints -> 150, Mesh -> 20, MeshStyle -> Opacity[.1], PlotRange -> All], 
 Graphics[{FaceForm[], EdgeForm[Directive[White, Opacity[.7]]], 
   CountryData["UnitedStates", "FullPolygon"]}], 
 AspectRatio -> Automatic, PlotRange -> {{-180, -65}, {20, 70}}, 
 ImageSize -> 800, Frame -> False]

enter image description here

Well I do not have your data, so I'll just show things I have. I'll go with India, it has nice cities layout. You can upgrade for your data yourself. If you know only locations of cities, but not their population, then

data = DeleteCases[
   Reverse[CityData[#, "Coordinates"]] & /@ CityData[{All, "India"}], 
Missing["NotAvailable"]];

Show[SmoothDensityHistogram[data, .3, ColorFunction -> "SunsetColors",
   PlotPoints -> 150, Mesh -> 20, MeshStyle -> Opacity[.1], PlotRange -> All], 
 Graphics[{FaceForm[], EdgeForm[Directive[White, Opacity[.7]]], 
   CountryData["India", "Polygon"]}]]

enter image description here

If you know the population, then maybe something like this:

Graphics[{Opacity[0.1, Blue], 
  Cases[Disk[Reverse[CityData[#, "Coordinates"]], 
      Log[10.^12, CityData[#, "Population"]]] & /@ 
    CityData[{All, "India"}], Disk[{__Real}, _Real]], {FaceForm[], 
   EdgeForm[Directive[Red, Thick, Opacity[.9]]], 
   CountryData["India", "Polygon"]}}, Background -> Black]

enter image description here

Well I do not have your data, so I'll just show things I have. I'll go with India, it has nice cities layout. You can upgrade for your data yourself. If you know only locations of cities, but not their population, then

data = DeleteCases[
   Reverse[CityData[#, "Coordinates"]] & /@ CityData[{All, "India"}], 
Missing["NotAvailable"]];

Show[SmoothDensityHistogram[data, .3, ColorFunction -> "SunsetColors",
   PlotPoints -> 150, Mesh -> 20, MeshStyle -> Opacity[.1], PlotRange -> All], 
 Graphics[{FaceForm[], EdgeForm[Directive[White, Opacity[.7]]], 
   CountryData["India", "Polygon"]}]]

enter image description here

If you know the population, then maybe something like this:

Graphics[{Opacity[0.1, Blue], 
  Cases[Disk[Reverse[CityData[#, "Coordinates"]], 
      Log[10.^12, CityData[#, "Population"]]] & /@ 
    CityData[{All, "India"}], Disk[{__Real}, _Real]], {FaceForm[], 
   EdgeForm[Directive[Red, Thick, Opacity[.9]]], 
   CountryData["India", "Polygon"]}}, Background -> Black]

enter image description here

For US use something like:

data = DeleteCases[Reverse[CityData[#, "Coordinates"]] & /@ 
    CityData[{All, "UnitedStates"}], Missing["NotAvailable"]];
Show[SmoothDensityHistogram[data, .5, ColorFunction -> "SunsetColors",
   PlotPoints -> 150, Mesh -> 20, MeshStyle -> Opacity[.1], PlotRange -> All], 
 Graphics[{FaceForm[], EdgeForm[Directive[White, Opacity[.7]]], 
   CountryData["UnitedStates", "FullPolygon"]}], 
 AspectRatio -> Automatic, PlotRange -> {{-180, -65}, {20, 70}}, 
 ImageSize -> 800, Frame -> False]

enter image description here

1
source | link

Well I do not have your data, so I'll just show things I have. I'll go with India, it has nice cities layout. You can upgrade for your data yourself. If you know only locations of cities, but not their population, then

data = DeleteCases[
   Reverse[CityData[#, "Coordinates"]] & /@ CityData[{All, "India"}], 
Missing["NotAvailable"]];

Show[SmoothDensityHistogram[data, .3, ColorFunction -> "SunsetColors",
   PlotPoints -> 150, Mesh -> 20, MeshStyle -> Opacity[.1], PlotRange -> All], 
 Graphics[{FaceForm[], EdgeForm[Directive[White, Opacity[.7]]], 
   CountryData["India", "Polygon"]}]]

enter image description here

If you know the population, then maybe something like this:

Graphics[{Opacity[0.1, Blue], 
  Cases[Disk[Reverse[CityData[#, "Coordinates"]], 
      Log[10.^12, CityData[#, "Population"]]] & /@ 
    CityData[{All, "India"}], Disk[{__Real}, _Real]], {FaceForm[], 
   EdgeForm[Directive[Red, Thick, Opacity[.9]]], 
   CountryData["India", "Polygon"]}}, Background -> Black]

enter image description here