This gist was created to demonstrate map generation with Leaflet.js, and all files are associated with my blog post under the same name.
We access map tiles through Open Street Maps (OSM) and then plot location data formatted as GeoJSON.
{ | |
"type": "FeatureCollection", | |
"features": [ | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-0.1198244", | |
"51.5112139" | |
] | |
}, | |
"properties": { | |
"name": "London, UK" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-73.95", | |
"40.65" | |
] | |
}, | |
"properties": { | |
"name": "Brooklyn, NY, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-73.9930957", | |
"40.7545443" | |
] | |
}, | |
"properties": { | |
"name": "321 West 37th Street, New York, NY 10018, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-122.4194155", | |
"37.7749295" | |
] | |
}, | |
"properties": { | |
"name": "San Francisco, CA, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"8.5391825", | |
"47.3686498" | |
] | |
}, | |
"properties": { | |
"name": "Zurich, Switzerland" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"14.4378005", | |
"50.0755381" | |
] | |
}, | |
"properties": { | |
"name": "Prague, Czech Republic" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"36.8219462", | |
"-1.2920659" | |
] | |
}, | |
"properties": { | |
"name": "Nairobi, Kenya" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"116.407526", | |
"39.90403" | |
] | |
}, | |
"properties": { | |
"name": "Beijing, China" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-110.5866674", | |
"44.4225727" | |
] | |
}, | |
"properties": { | |
"name": "Yellowstone National Park, WY 82190, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-1.256313", | |
"51.7599982" | |
] | |
}, | |
"properties": { | |
"name": "Oxford, Oxfordshire OX1 3PU, UK" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-74.0712895", | |
"40.7266843" | |
] | |
}, | |
"properties": { | |
"name": "Saint Peter's University, 2641 John F Kennedy Boulevard West, Jersey City, NJ 07306, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-0.3762881", | |
"39.4699075" | |
] | |
}, | |
"properties": { | |
"name": "Valencia, Spain" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"2.1734035", | |
"41.3850639" | |
] | |
}, | |
"properties": { | |
"name": "Barcelona, Spain" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"9.186516", | |
"45.4654542" | |
] | |
}, | |
"properties": { | |
"name": "Milan, Italy" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"34.791462", | |
"31.252973" | |
] | |
}, | |
"properties": { | |
"name": "Beersheba, Israel" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"34.777819", | |
"32.066158" | |
] | |
}, | |
"properties": { | |
"name": "Tel Aviv, Israel" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"35.21371", | |
"31.768319" | |
] | |
}, | |
"properties": { | |
"name": "Jerusalem, Israel" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"34.951925", | |
"29.557669" | |
] | |
}, | |
"properties": { | |
"name": "Eilat, Israel" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"108.940175", | |
"34.341568" | |
] | |
}, | |
"properties": { | |
"name": "Xi'an, Shaanxi, China" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"21.0122287", | |
"52.2296756" | |
] | |
}, | |
"properties": { | |
"name": "Warsaw, Poland" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"19.9449799", | |
"50.0646501" | |
] | |
}, | |
"properties": { | |
"name": "Kraków, Poland" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-78.353142", | |
"18.273979" | |
] | |
}, | |
"properties": { | |
"name": "Negril, Jamaica" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-86.845937", | |
"21.158964" | |
] | |
}, | |
"properties": { | |
"name": "Cancún, Quintana Roo, Mexico" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-83.7430378", | |
"42.2808256" | |
] | |
}, | |
"properties": { | |
"name": "Ann Arbor, MI, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-89.4012302", | |
"43.0730517" | |
] | |
}, | |
"properties": { | |
"name": "Madison, WI, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-93.26667", | |
"44.983334" | |
] | |
}, | |
"properties": { | |
"name": "Minneapolis, MN, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-95.2352501", | |
"38.9716689" | |
] | |
}, | |
"properties": { | |
"name": "Lawrence, KS, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-92.5832496", | |
"40.1947539" | |
] | |
}, | |
"properties": { | |
"name": "Kirksville, MO 63501, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-90.1994042", | |
"38.6270025" | |
] | |
}, | |
"properties": { | |
"name": "St. Louis, MO, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-94.5785667", | |
"39.0997265" | |
] | |
}, | |
"properties": { | |
"name": "Kansas City, MO, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-110.7624282", | |
"43.4799291" | |
] | |
}, | |
"properties": { | |
"name": "Jackson, WY, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-118.2436849", | |
"34.0522342" | |
] | |
}, | |
"properties": { | |
"name": "Los Angeles, CA, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-117.1572551", | |
"32.7153292" | |
] | |
}, | |
"properties": { | |
"name": "San Diego, CA, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-122.1141298", | |
"37.3852183" | |
] | |
}, | |
"properties": { | |
"name": "Los Altos, CA, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-82.9987942", | |
"39.9611755" | |
] | |
}, | |
"properties": { | |
"name": "Columbus, OH, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-80.6075513", | |
"28.3200067" | |
] | |
}, | |
"properties": { | |
"name": "Cocoa Beach, FL, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-81.3792365", | |
"28.5383355" | |
] | |
}, | |
"properties": { | |
"name": "Orlando, FL, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-84.3879824", | |
"33.7489954" | |
] | |
}, | |
"properties": { | |
"name": "Atlanta, GA, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-93.0537839", | |
"34.1209292" | |
] | |
}, | |
"properties": { | |
"name": "Arkadelphia, AR, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-75.163789", | |
"39.952335" | |
] | |
}, | |
"properties": { | |
"name": "Philadelphia, PA, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-74.0776417", | |
"40.7281575" | |
] | |
}, | |
"properties": { | |
"name": "Jersey City, NJ, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-2.247926", | |
"53.479251" | |
] | |
}, | |
"properties": { | |
"name": "Manchester, UK" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"2.3522219", | |
"48.856614" | |
] | |
}, | |
"properties": { | |
"name": "Paris, France" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-157.8583333", | |
"21.3069444" | |
] | |
}, | |
"properties": { | |
"name": "Honolulu, HI, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"13.6387067", | |
"45.0811661" | |
] | |
}, | |
"properties": { | |
"name": "Rovinj, Croatia" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"9.3666667", | |
"47.4166667" | |
] | |
}, | |
"properties": { | |
"name": "St. Gallen, Switzerland" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"4.8951679", | |
"52.3702157" | |
] | |
}, | |
"properties": { | |
"name": "Amsterdam, The Netherlands" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"28.97696", | |
"41.00527" | |
] | |
}, | |
"properties": { | |
"name": "Istanbul, Turkey" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"29.2177777", | |
"40.0736111" | |
] | |
}, | |
"properties": { | |
"name": "Uludağ, 16370 Bursa Province, Turkey" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"26.2388889", | |
"39.9575" | |
] | |
}, | |
"properties": { | |
"name": "Troia, Tevfikiye Köyü, 17060 İntepe/Çanakkale Province, Turkey" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-96.8004511", | |
"32.7801399" | |
] | |
}, | |
"properties": { | |
"name": "Dallas, TX, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-97.1080656", | |
"32.735687" | |
] | |
}, | |
"properties": { | |
"name": "Arlington, TX, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-76.5018807", | |
"42.4439614" | |
] | |
}, | |
"properties": { | |
"name": "Ithaca, NY, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-75.1393498", | |
"38.7745565" | |
] | |
}, | |
"properties": { | |
"name": "Lewes, DE, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-77.0363658", | |
"38.8951118" | |
] | |
}, | |
"properties": { | |
"name": "Washington, DC, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-77.8600012", | |
"40.7933949" | |
] | |
}, | |
"properties": { | |
"name": "State College, PA, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-87.6297982", | |
"41.8781136" | |
] | |
}, | |
"properties": { | |
"name": "Chicago, IL, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-87.3770488", | |
"44.8341302" | |
] | |
}, | |
"properties": { | |
"name": "Door, WI, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"9.258219", | |
"46.8058842" | |
] | |
}, | |
"properties": { | |
"name": "Laax, Switzerland" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-120.0316916", | |
"39.1100901" | |
] | |
}, | |
"properties": { | |
"name": "Lake Tahoe, United States" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-92.7843553", | |
"38.1758645" | |
] | |
}, | |
"properties": { | |
"name": "Sunrise Beach, MO, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-71.0597732", | |
"42.3584308" | |
] | |
}, | |
"properties": { | |
"name": "Boston, MA, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-84.1916069", | |
"39.7589478" | |
] | |
}, | |
"properties": { | |
"name": "Dayton, OH, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-79.9958864", | |
"40.4406248" | |
] | |
}, | |
"properties": { | |
"name": "Pittsburgh, PA, USA" | |
} | |
}, | |
{ | |
"type": "Feature", | |
"geometry": { | |
"type": "Point", | |
"coordinates": [ | |
"-90.0715323", | |
"29.9510658" | |
] | |
}, | |
"properties": { | |
"name": "New Orleans, LA, USA" | |
} | |
} | |
] | |
} |
<!DOCTYPE html> | |
<html> | |
<head> | |
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5/leaflet.css" /> | |
<style> | |
html, body { | |
height: 100%; | |
width: 100%; | |
} | |
</style> | |
<script src="http://code.jquery.com/jquery.js"></script> | |
<script src="http://cdn.leafletjs.com/leaflet-0.5/leaflet.js"></script> | |
<script src="http://maps.stamen.com/js/tile.stamen.js?v1.2.1"></script> | |
</head> | |
<body id="map"> | |
<script> | |
// Define initial parameters: | |
// location over which we will initially center the map | |
var loc = {'lat': 40.754531, 'lon': -73.993113}, | |
// extent to which we are initially zoommed | |
zoomLevel = 3, | |
// the maximum level of detail a user is allowed to see | |
maxZoom = 15, | |
// id of the element in which we will place the map | |
mapID = 'map'; | |
// Create the map object, setting the initial view: | |
var map = L.map('map').setView( | |
[loc.lat, loc.lon], | |
zoomLevel | |
); | |
// Instantiate a tile layer, directing Leaflet to use the Open Street Map (OSM) API to access map tiles: | |
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { | |
'maxZoom': maxZoom, | |
'attribution': 'Map tiles by <a href="http://stamen.com">Stamen Design</a>, under <a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>. Map data © <a href="http://openstreetmap.org">OpenStreetMap</a>, under <a href="http://creativecommons.org/licenses/by-sa/3.0">CC BY SA</a>' | |
}).addTo(map); | |
// Add a watercolor layer: http://maps.stamen.com/#terrain/12/37.7706/-122.3782 | |
// Comment this line out if you do not want a watercolor layer and remove the attribution above to Stamen Design. | |
var watercolor = new L.StamenTileLayer("watercolor") | |
.addTo(map); | |
// Load geoJSON data with jQuery: | |
$.getJSON('data.json', function(data) { | |
// Use Leaflet to parse the data and display it as a layer on the map: | |
L.geoJson(data, { | |
onEachFeature: function (feature, layer) { | |
layer.bindPopup(feature.properties.name); | |
} | |
}).addTo(map); | |
}); | |
</script> | |
</body> | |
</html> |