Improve projection for desired size

This commit is contained in:
Corentin 2025-09-09 17:52:51 +09:00
commit 338c6eebee

14
map.py
View file

@ -167,20 +167,14 @@ def main():
# math.degrees(2 * math.atan(math.exp(y / zoom_scale)) - math.pi / 2.)
# )
map_width = 0
map_height = 0
min_x = 0
max_y = 0
for zoom_level in range(50):
zoom_scale = 2**zoom_level / 2 * math.pi
zoom_level = 1 + int(-math.log2(((bounds.maxlon - bounds.minlon) * 2 * math.pi) / map_target_width))
zoom_scale = (2**zoom_level * map_target_width) / (2 * math.pi)
min_x, min_y = get_map_raw_coords(bounds.minlon, bounds.minlat)
max_x, max_y = get_map_raw_coords(bounds.maxlon, bounds.maxlat)
map_width = max_x - min_x
if map_width >= map_target_width:
map_height = abs(max_y - min_y)
break
map_height = max_y - min_y
assert map_width > 0 and 0 < map_height < map_width * 3
assert map_width > 0 and 0 < map_height < map_width * 10
def get_map_coords(lon: float, lat: float) -> tuple[int, int]:
nonlocal min_x, max_y