use jismeshcode::prelude::*;
fn main() {
println!("=== 基本的な使い方のサンプル ===\n");
println!("1. 座標からメッシュコードへの変換:");
let coord = Coordinate::new(35.6812, 139.7671).unwrap();
println!(" 座標: ({}, {})", coord.lat(), coord.lon());
let mesh_first = coord_to_mesh(coord, MeshLevel::First).unwrap();
println!(" 1次メッシュ: {}", mesh_first);
let mesh_second = coord_to_mesh(coord, MeshLevel::Second).unwrap();
println!(" 2次メッシュ: {}", mesh_second);
let mesh_third = coord_to_mesh(coord, MeshLevel::Third).unwrap();
println!(" 3次メッシュ: {}", mesh_third);
println!("\n2. メッシュの境界を取得:");
let bounds = mesh_to_bounds(mesh_third);
println!(
" 南西端: ({:.6}, {:.6})",
bounds.min_lat(),
bounds.min_lon()
);
println!(
" 北東端: ({:.6}, {:.6})",
bounds.max_lat(),
bounds.max_lon()
);
println!("\n3. メッシュの中心座標を取得:");
let center = mesh_to_center(mesh_third);
println!(" 中心座標: ({:.6}, {:.6})", center.lat(), center.lon());
println!("\n4. 座標がメッシュ内に含まれるか確認:");
let in_mesh = contains(mesh_third, coord);
println!(" 座標はメッシュ内にある: {}", in_mesh);
println!("\n5. 親メッシュを取得:");
if let Some(parent_mesh) = parent(mesh_third) {
println!(" {} の親メッシュ: {}", mesh_third, parent_mesh);
}
println!("\n6. 子メッシュの数を取得:");
let mesh_second = MeshCode::from_str("533946").unwrap();
let children_list = children(mesh_second);
println!(
" {} の子メッシュ数: {} 個",
mesh_second,
children_list.len()
);
println!("\n7. 文字列からメッシュコードをパース:");
let mesh = MeshCode::from_str("5339").unwrap();
println!(" パース結果: {} (レベル: {:?})", mesh, mesh.level());
}