Browse Source

map_view_gl: Specify min and max zoom level

Johannes Hofmann 7 years ago
parent
commit
abb562f412
1 changed files with 17 additions and 10 deletions
  1. 17
    10
      src/map_view_gl.rs

+ 17
- 10
src/map_view_gl.rs View File

10
 use tile_source::TileSource;
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
 #[derive(Debug)]
16
 #[derive(Debug)]
14
 pub struct MapViewGl<'a> {
17
 pub struct MapViewGl<'a> {
15
     cx: &'a Context,
18
     cx: &'a Context,
70
 
73
 
71
         program.before_render();
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
         MapViewGl {
82
         MapViewGl {
76
             cx,
83
             cx,
206
             } else {
213
             } else {
207
                 z.floor() * step_size
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
         self.map_view.set_zoom(new_zoom);
218
         self.map_view.set_zoom(new_zoom);
212
     }
219
     }
213
 
220
 
214
     pub fn zoom(&mut self, zoom_delta: f64) {
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
         } else {
226
         } else {
220
             self.map_view.zoom(zoom_delta);
227
             self.map_view.zoom(zoom_delta);
221
         }
228
         }
222
     }
229
     }
223
 
230
 
224
     pub fn zoom_at(&mut self, pos: ScreenCoord, zoom_delta: f64) {
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
         } else {
236
         } else {
230
             self.map_view.zoom_at(pos, zoom_delta);
237
             self.map_view.zoom_at(pos, zoom_delta);
231
         }
238
         }