Explorar el Código

map_view_gl: Specify min and max zoom level

Johannes Hofmann hace 7 años
padre
commit
abb562f412
Se han modificado 1 ficheros con 17 adiciones y 10 borrados
  1. 17
    10
      src/map_view_gl.rs

+ 17
- 10
src/map_view_gl.rs Ver fichero

@@ -10,6 +10,9 @@ use tile_atlas::TileAtlas;
10 10
 use tile_source::TileSource;
11 11
 
12 12
 
13
+const MIN_ZOOM_LEVEL: f64 = 0.0;
14
+const MAX_ZOOM_LEVEL: f64 = 22.0;
15
+
13 16
 #[derive(Debug)]
14 17
 pub struct MapViewGl<'a> {
15 18
     cx: &'a Context,
@@ -70,7 +73,11 @@ impl<'a> MapViewGl<'a> {
70 73
 
71 74
         program.before_render();
72 75
 
73
-        let map_view = MapView::with_filling_zoom(f64::from(initial_size.0), f64::from(initial_size.1), tile_size);
76
+        let mut map_view = MapView::with_filling_zoom(f64::from(initial_size.0), f64::from(initial_size.1), tile_size);
77
+
78
+        if map_view.zoom < MIN_ZOOM_LEVEL {
79
+            map_view.zoom = MIN_ZOOM_LEVEL;
80
+        }
74 81
 
75 82
         MapViewGl {
76 83
             cx,
@@ -206,26 +213,26 @@ impl<'a> MapViewGl<'a> {
206 213
             } else {
207 214
                 z.floor() * step_size
208 215
             }
209
-        }.max(0.0).min(22.0);
216
+        }.max(MIN_ZOOM_LEVEL).min(MAX_ZOOM_LEVEL);
210 217
 
211 218
         self.map_view.set_zoom(new_zoom);
212 219
     }
213 220
 
214 221
     pub fn zoom(&mut self, zoom_delta: f64) {
215
-        if self.map_view.zoom + zoom_delta < 0.0 {
216
-            self.map_view.set_zoom(0.0);
217
-        } else if self.map_view.zoom + zoom_delta > 22.0 {
218
-            self.map_view.set_zoom(22.0);
222
+        if self.map_view.zoom + zoom_delta < MIN_ZOOM_LEVEL {
223
+            self.map_view.set_zoom(MIN_ZOOM_LEVEL);
224
+        } else if self.map_view.zoom + zoom_delta > MAX_ZOOM_LEVEL {
225
+            self.map_view.set_zoom(MAX_ZOOM_LEVEL);
219 226
         } else {
220 227
             self.map_view.zoom(zoom_delta);
221 228
         }
222 229
     }
223 230
 
224 231
     pub fn zoom_at(&mut self, pos: ScreenCoord, zoom_delta: f64) {
225
-        if self.map_view.zoom + zoom_delta < 0.0 {
226
-            self.map_view.set_zoom_at(pos, 0.0);
227
-        } else if self.map_view.zoom + zoom_delta > 22.0 {
228
-            self.map_view.set_zoom_at(pos, 22.0);
232
+        if self.map_view.zoom + zoom_delta < MIN_ZOOM_LEVEL {
233
+            self.map_view.set_zoom_at(pos, MIN_ZOOM_LEVEL);
234
+        } else if self.map_view.zoom + zoom_delta > MAX_ZOOM_LEVEL {
235
+            self.map_view.set_zoom_at(pos, MAX_ZOOM_LEVEL);
229 236
         } else {
230 237
             self.map_view.zoom_at(pos, zoom_delta);
231 238
         }