Просмотр исходного кода

Adjust zoom when switching between projections

Johannes Hofmann 7 лет назад
Родитель
Сommit
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
     }
60
     }
61
 
61
 
62
     pub fn from_orthografic_view(ortho: &OrthograficView) -> Self {
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
         MercatorView {
66
         MercatorView {
64
             viewport_size: ortho.viewport_size,
67
             viewport_size: ortho.viewport_size,
65
             tile_size: ortho.tile_size,
68
             tile_size: ortho.tile_size,
66
             center: ortho.center,
69
             center: ortho.center,
67
-            zoom: ortho.zoom,
70
+            zoom: ortho.zoom - zoom_delta,
68
             tile_zoom_offset: ortho.tile_zoom_offset,
71
             tile_zoom_offset: ortho.tile_zoom_offset,
69
         }
72
         }
70
     }
73
     }

+ 3
- 1
src/orthografic_view.rs Просмотреть файл

177
     }
177
     }
178
 
178
 
179
     pub fn from_mercator_view(merc: &MercatorView) -> Self {
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
         OrthograficView {
182
         OrthograficView {
181
             viewport_size: merc.viewport_size,
183
             viewport_size: merc.viewport_size,
182
             tile_size: merc.tile_size,
184
             tile_size: merc.tile_size,
183
             center: merc.center,
185
             center: merc.center,
184
-            zoom: merc.zoom,
186
+            zoom: merc.zoom + zoom_delta,
185
             tile_zoom_offset: merc.tile_zoom_offset,
187
             tile_zoom_offset: merc.tile_zoom_offset,
186
         }
188
         }
187
     }
189
     }