use jismeshcode::prelude::*;
fn main() {
println!("=== 隣接メッシュの分析 ===\n");
let mesh = MeshCode::from_str("53394611").unwrap();
println!("対象メッシュ: {}", mesh);
let center = mesh_to_center(mesh);
println!("中心座標: ({:.6}, {:.6})\n", center.lat(), center.lon());
println!("各方向の隣接メッシュ:");
for dir in Direction::ALL.iter() {
if let Some(neighbor_mesh) = neighbor(mesh, *dir) {
let neighbor_center = mesh_to_center(neighbor_mesh);
println!(
" {:10}: {} (中心: {:.6}, {:.6})",
format!("{}", dir),
neighbor_mesh,
neighbor_center.lat(),
neighbor_center.lon()
);
} else {
println!(" {:10}: (範囲外)", format!("{}", dir));
}
}
println!("\nすべての隣接メッシュを一括取得:");
let all_neighbors = neighbors(mesh);
println!(" 見つかった隣接メッシュ数: {} 個", all_neighbors.len());
for (i, n) in all_neighbors.iter().enumerate() {
println!(" {}: {}", i + 1, n);
}
println!("\n実用例: 東方向への連鎖的な移動");
let mut current = mesh;
for i in 1..=3 {
if let Some(next) = neighbor(current, Direction::East) {
println!(" {}回目の東隣: {}", i, next);
current = next;
} else {
println!(" {}回目: これ以上東に進めません", i);
break;
}
}
}