Преглед изворни кода

Adjust zoom when switching between projections

Johannes Hofmann пре 7 година
родитељ
комит
437b30d964
2 измењених фајлова са 7 додато и 2 уклоњено
  1. 4
    1
      src/mercator_view.rs
  2. 3
    1
      src/orthografic_view.rs

+ 4
- 1
src/mercator_view.rs Прегледај датотеку

@@ -60,11 +60,14 @@ impl MercatorView {
60 60
     }
61 61
 
62 62
     pub fn from_orthografic_view(ortho: &OrthograficView) -> Self {
63
+        let latlon = ortho.center.to_latlon_rad();
64
+        let zoom_delta = (1.0 / latlon.lat.cos()).log2();
65
+
63 66
         MercatorView {
64 67
             viewport_size: ortho.viewport_size,
65 68
             tile_size: ortho.tile_size,
66 69
             center: ortho.center,
67
-            zoom: ortho.zoom,
70
+            zoom: ortho.zoom - zoom_delta,
68 71
             tile_zoom_offset: ortho.tile_zoom_offset,
69 72
         }
70 73
     }

+ 3
- 1
src/orthografic_view.rs Прегледај датотеку

@@ -177,11 +177,13 @@ impl OrthograficView {
177 177
     }
178 178
 
179 179
     pub fn from_mercator_view(merc: &MercatorView) -> Self {
180
+        let latlon = merc.center.to_latlon_rad();
181
+        let zoom_delta = (1.0 / latlon.lat.cos()).log2();
180 182
         OrthograficView {
181 183
             viewport_size: merc.viewport_size,
182 184
             tile_size: merc.tile_size,
183 185
             center: merc.center,
184
-            zoom: merc.zoom,
186
+            zoom: merc.zoom + zoom_delta,
185 187
             tile_zoom_offset: merc.tile_zoom_offset,
186 188
         }
187 189
     }