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