I\'m using leaflet.js and OSM tiles to create a map, but I\'d only like the continental United States to be viewable, not the entire world. Is that possible?
I\'m lo
That's possible and easy to do. First of you'll need the coordinates for the bounding box (the outermost edges) of the continental united states. You can just google them, i found them here: http://isithackday.com/geoplanet-explorer/index.php?woeid=24865672 You need the southwest and northeast coordinates to create a bounds object:
var maxBounds = L.latLngBounds(
L.latLng(5.499550, -167.276413), //Southwest
L.latLng(83.162102, -52.233040) //Northeast
);
Or you can go for the shorthand version, a nested array:
var maxBounds = [
[5.499550, -167.276413], //Southwest
[83.162102, -52.233040] //Northeast
];
Now you can set those on your map in two ways, upon initialization, using the maxBounds
option and the fitBounds
method of L.Map
L.map('map', {
'center': [0, 0],
'zoom': 0
'maxBounds': maxBounds
}).fitBounds(maxBounds);
Here's a working example on Plunker: http://plnkr.co/edit/eEsxeh?p=preview
Or when your map is already initialized you can use the setMaxBounds
method and the fitBounds
method of L.Map
. (assuming your map is assigned to variable map
):
map.setMaxBounds(maxBounds);
map.fitBounds(maxBounds);
Here's a working example on Plunker: http://plnkr.co/edit/HJKk0O?p=preview