update to zoom zone
This commit is contained in:
@@ -222,7 +222,20 @@ async fn fetch_cached(url: &str) -> Option<String> {
|
||||
}
|
||||
|
||||
fn get_visible_tiles(camera: &Camera) -> Vec<(i32, i32, i32)> {
|
||||
let z = 10; // Fixed zoom level for data
|
||||
// Select zoom level based on camera zoom
|
||||
// Zoom 6: World/Country view
|
||||
// Zoom 9: Region view
|
||||
// Zoom 12: City view
|
||||
// Zoom 14: Street view
|
||||
let z = if camera.zoom < 500.0 {
|
||||
6
|
||||
} else if camera.zoom < 2000.0 {
|
||||
9
|
||||
} else if camera.zoom < 8000.0 {
|
||||
12
|
||||
} else {
|
||||
14
|
||||
};
|
||||
let n = 2.0f64.powi(z);
|
||||
|
||||
let half_width = 1.0 * camera.aspect / camera.zoom;
|
||||
@@ -360,8 +373,8 @@ pub async fn run() {
|
||||
if let Some(btn) = btn_zoom_in {
|
||||
let closure = wasm_bindgen::closure::Closure::<dyn FnMut()>::new(move || {
|
||||
let mut cam = camera_clone.lock().unwrap();
|
||||
cam.zoom *= 1.2;
|
||||
cam.zoom = cam.zoom.max(100.0).min(50000.0);
|
||||
cam.zoom *= 1.5;
|
||||
cam.zoom = cam.zoom.max(20.0).min(50000.0);
|
||||
window_clone.request_redraw();
|
||||
});
|
||||
btn.set_onclick(Some(closure.as_ref().unchecked_ref()));
|
||||
@@ -376,8 +389,8 @@ pub async fn run() {
|
||||
if let Some(btn) = btn_zoom_out {
|
||||
let closure = wasm_bindgen::closure::Closure::<dyn FnMut()>::new(move || {
|
||||
let mut cam = camera_clone.lock().unwrap();
|
||||
cam.zoom /= 1.2;
|
||||
cam.zoom = cam.zoom.max(100.0).min(50000.0);
|
||||
cam.zoom /= 1.5;
|
||||
cam.zoom = cam.zoom.max(20.0).min(50000.0);
|
||||
window_clone.request_redraw();
|
||||
});
|
||||
btn.set_onclick(Some(closure.as_ref().unchecked_ref()));
|
||||
@@ -505,7 +518,7 @@ pub async fn run() {
|
||||
};
|
||||
|
||||
let mut cam = camera.lock().unwrap();
|
||||
let zoom_factor = 1.1f32;
|
||||
let zoom_factor = 1.5f32;
|
||||
if scroll_y > 0.0 {
|
||||
cam.zoom *= zoom_factor;
|
||||
} else if scroll_y < 0.0 {
|
||||
@@ -513,7 +526,7 @@ pub async fn run() {
|
||||
}
|
||||
|
||||
// Clamp zoom
|
||||
cam.zoom = cam.zoom.max(100.0).min(50000.0);
|
||||
cam.zoom = cam.zoom.max(20.0).min(50000.0);
|
||||
|
||||
window.request_redraw();
|
||||
}
|
||||
@@ -713,7 +726,7 @@ pub async fn run() {
|
||||
contents: bytemuck::cast_slice(&landuse_vertex_data),
|
||||
usage: wgpu::BufferUsages::VERTEX,
|
||||
});
|
||||
web_sys::console::log_1(&format!("Created landuse buffer with {} vertices", landuse_vertex_data.len()).into());
|
||||
|
||||
|
||||
let water_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor {
|
||||
label: Some("Tile Water Buffer"),
|
||||
@@ -826,23 +839,17 @@ pub async fn run() {
|
||||
}
|
||||
|
||||
if let Some(landuse) = landuse_data {
|
||||
if !landuse.is_empty() {
|
||||
web_sys::console::log_1(&format!("Fetched {} landuse items for tile {}/{}/{}", landuse.len(), z, x, y).into());
|
||||
}
|
||||
|
||||
guard.landuse.insert((z, x, y), landuse);
|
||||
}
|
||||
|
||||
if let Some(water) = water_data {
|
||||
if !water.is_empty() {
|
||||
web_sys::console::log_1(&format!("Fetched {} water items for tile {}/{}/{}", water.len(), z, x, y).into());
|
||||
}
|
||||
|
||||
guard.water.insert((z, x, y), water);
|
||||
}
|
||||
|
||||
if let Some(railways) = railways_data {
|
||||
if !railways.is_empty() {
|
||||
web_sys::console::log_1(&format!("Fetched {} railway items for tile {}/{}/{}", railways.len(), z, x, y).into());
|
||||
}
|
||||
|
||||
guard.railways.insert((z, x, y), railways);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user