Derive OSM viewport from zoom level instead of the other way around
Replace the heuristic choose_zoom() back-computation with a fixed OSM_ZOOM constant (zoom 10). The orthographic projection half-extents are now derived so that one tile pixel maps exactly to one output pixel, eliminating bilinear interpolation artefacts on the OSM base layer. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
16
src/main.rs
16
src/main.rs
@@ -134,16 +134,12 @@ fn main() -> Result<()> {
|
||||
let basemap = if args.no_basemap {
|
||||
None
|
||||
} else {
|
||||
let proj = projection::OrthoProjection::new(
|
||||
render::CENTER_LAT,
|
||||
render::CENTER_LON,
|
||||
render::HALF_W_DEG,
|
||||
render::HALF_H_DEG,
|
||||
);
|
||||
let proj = render::make_projection();
|
||||
let tile_cache = tiles::fetch_tiles(
|
||||
&proj,
|
||||
render::MAP_W,
|
||||
render::MAP_H,
|
||||
render::OSM_ZOOM,
|
||||
&PathBuf::from(CACHE_DIR),
|
||||
)?;
|
||||
Some(tiles::rasterize_basemap(
|
||||
@@ -157,16 +153,12 @@ fn main() -> Result<()> {
|
||||
let labels = if args.no_basemap {
|
||||
None
|
||||
} else {
|
||||
let proj = projection::OrthoProjection::new(
|
||||
render::CENTER_LAT,
|
||||
render::CENTER_LON,
|
||||
render::HALF_W_DEG,
|
||||
render::HALF_H_DEG,
|
||||
);
|
||||
let proj = render::make_projection();
|
||||
let label_cache = tiles::fetch_label_tiles(
|
||||
&proj,
|
||||
render::MAP_W,
|
||||
render::MAP_H,
|
||||
render::OSM_ZOOM,
|
||||
&PathBuf::from(CACHE_DIR),
|
||||
)?;
|
||||
Some(tiles::rasterize_labels(
|
||||
|
||||
Reference in New Issue
Block a user