瀏覽代碼

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
     }
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
     }