3
require LWP::UserAgent;
9
my $api = "http://api.openstreetmap.org/api/0.5/map?bbox=";
14
my ($minlon, $minlat, $maxlon, $maxlat) = split ",", $bbox;
16
for (my $lon=$minlon; $lon<$maxlon; $lon+=$step) {
17
for (my $lat=$minlat; $lat<$maxlat; $lat+=$step) {
18
push @tiles, join (",", ($lon, $lat, (sort($maxlon,$lon+$step))[0], (sort($maxlat,$lat+$step))[0]));
22
while (scalar @tiles) {
24
my $tile = shift @tiles;
25
print STDERR "Getting bbox=$tile... ";
27
my $ua = LWP::UserAgent->new;
28
my $req = HTTP::Request->new(GET => "$api$tile");
29
my $res = $ua->request($req);
31
if ($res->is_success) {
35
# print STDERR $res->status_line . " --| ";
36
print STDERR $res->code . " --| ";
37
if ($res->code==400 || $res->code==500) {
38
print STDERR "tile will be splitted\n";
39
my ($lon0, $lat0, $lon1, $lat1) = split ",", $tile;
40
push @tiles, join (",", ($lon0, $lat0, ($lon0+$lon1)/2, ($lat0+$lat1)/2));
41
push @tiles, join (",", ($lon0, ($lat0+$lat1)/2, ($lon0+$lon1)/2, $lat1));
42
push @tiles, join (",", (($lon0+$lon1)/2, $lat0, $lon1, ($lat0+$lat1)/2));
43
push @tiles, join (",", (($lon0+$lon1)/2, ($lat0+$lat1)/2, $lon1, $lat1));
45
print STDERR "shall try again\n";