листовка — автономное извлечение плитки OpenStreetMap в переполнении стека

Я пытаюсь использовать плитки OpenStreetMap для автономного использования в наших приложениях. Я извлекаю плитки из PHP-скрипта, используя формулы Вот. Но ясно видно, что когда я увеличиваю масштаб автономной карты, границы продолжают уменьшаться. Я использую следующий код:

$lon1 = -0.147315;
$lon2 = -0.123712;
$lat1 = 51.517074;
$lat2 = 51.505883;
for($zoom = 12; $zoom <= 18; $zoom++){
$xtile1 = floor((($lon1 + 180) / 360) * pow(2, $zoom));
$xtile2 = floor((($lon2 + 180) / 360) * pow(2, $zoom));
$ytile1 = floor((1 - log(tan(deg2rad($lat1)) + 1 / cos(deg2rad($lat1))) / pi()) /2 * pow(2, $zoom));
$ytile2 = floor((1 - log(tan(deg2rad($lat2)) + 1 / cos(deg2rad($lat2))) / pi()) /2 * pow(2, $zoom));

for($xtile = $xtile1; $xtile<=$xtile2+1;$xtile++){
for($ytile = $ytile1;$ytile<=$ytile2+1;$ytile++){
( $xtile + $ytile )% 2 == 0 ? $serverId = 'a' : $serverId = 'b'; //load balancing between 2 servers
$url = "http://" . $serverId . ".tile.openstreetmap.org/" . $zoom . "/" . $xtile . "/" . $ytile .".png";
$img = "central/" . $zoom . "_" . $xtile . "_" . $ytile .".png";
file_put_contents($img, file_get_contents($url));
echo $img . "saved <br>";
sleep(1);
}
}
}

Я пытаюсь увеличить масштаб в пределах первоначального увеличения, но получаю сообщения об ошибках типа «плитка не найдена». Я что-то не так делаю? Может кто-нибудь, пожалуйста, просветите меня?

Спасибо.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]