Я пытаюсь использовать плитки 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);
}
}
}
Я пытаюсь увеличить масштаб в пределах первоначального увеличения, но получаю сообщения об ошибках типа «плитка не найдена». Я что-то не так делаю? Может кто-нибудь, пожалуйста, просветите меня?
Спасибо.
Задача ещё не решена.
Других решений пока нет …