# How to get bounding box from coordinates (latitude, longitude), zoom level and size (screen)?

Is possible to get bounding box from coordinates (latitude, longitude), zoom level and size (screen)? I found only calculating bounding box from tile. I need it, because OpenStreetMap accept only bbox in export mode. I dont have any experience with this, so I will be glad for any advice. Thanks.

-
Search Tile numbers to lon./lat. wiki.openstreetmap.org/wiki/… – Mapperz Dec 3 '12 at 17:15

Yes, it is. I've had a similar problem, so I've written it up. Like this:

``````use Math::Trig;

sub getLonLat {
my (\$xtile, \$ytile, \$zoom) = @_;
my \$n = 2 ** \$zoom;
my \$lon_deg = \$xtile / \$n * 360.0 - 180.0;
my \$lat_deg = rad2deg(atan(sinh(pi * (1 - 2 * \$ytile / \$n))));
return (\$lon_deg, \$lat_deg);
}

# convert from permalink OSM format like:
# http://www.openstreetmap.org/?lat=43.731049999999996&lon=15.79375&zoom=13&layers=M
# to OSM "Export" iframe embedded bbox format like:
# http://www.openstreetmap.org/export/embed.html?bbox=15.7444,43.708,15.8431,43.7541&layer=mapnik

sub LonLat_to_bbox {
my (\$lat, \$lon, \$zoom) = @_;

my \$width = 425; my \$height = 350;  # note: must modify this to match your embed map width/height in pixels
my \$tile_size = 256;

my (\$xtile, \$ytile) = getTileNumber (\$lat, \$lon, \$zoom);

my \$xtile_s = (\$xtile * \$tile_size - \$width/2) / \$tile_size;
my \$ytile_s = (\$ytile * \$tile_size - \$height/2) / \$tile_size;
my \$xtile_e = (\$xtile * \$tile_size + \$width/2) / \$tile_size;
my \$ytile_e = (\$ytile * \$tile_size + \$height/2) / \$tile_size;

my (\$lon_s, \$lat_s) = getLonLat(\$xtile_s, \$ytile_s, \$zoom);
my (\$lon_e, \$lat_e) = getLonLat(\$xtile_e, \$ytile_e, \$zoom);

my \$bbox = "\$lon_s,\$lat_s,\$lon_e,\$lat_e";
return \$bbox;
}
``````

I've also added this info to OSM wiki, so it will be easier to find in the future...

-
how to do this in javascript? – Muneem Habib Feb 25 '15 at 7:13