実装に基づく解説 · 更新
同心円地図の計算方法と精度
circle-mapの円は、画面上に丸い図形を重ねたものではありません。中心の緯度・経度から、指定した距離だけ離れた地点を方位ごとに計算し、その点を結んでいます。このページでは、実際に地図を描く処理と同じ計算から例を示します。
地球を球として近似しています
計算に使う地球の半径は6,371,008.8mです。入力した半径をこの値で割り、球の中心から見た角度に換算します。その角度と出発点、進む方位から、球面上の到達地点を求めます。
地球の形を厳密に表す楕円体計算ではありません。境界線の確定、測量、飛行許可の判定など、精度や法的な判断が必要な用途には使えません。街の中で候補範囲を比較するための目安です。
1本の円を128区間に分ける
- 中心点の緯度・経度と、半径をメートルで受け取ります。
- 北から時計回りに、360度を128等分した方位を設定します。
- 各方位について、球面上を指定距離だけ進んだ地点を求めます。
- 最後に最初の点へ戻り、GeoJSONのポリゴンとしてMapboxに渡します。
画面に描く境界は点を結んだ線なので、数学的に連続した円そのものではありません。また、球面を画面へ投影するため、表示位置・地図の傾き・半径によって見た目も変わります。「画面上で丸く見えるか」と「中心からの距離」は別の話です。
実際の計算例:東京駅から半径10km
中心を東経139.7671度、北緯35.6812度にした場合の到達地点です。以下は地図本体と同じ処理で生成した値を小数点以下6桁に丸めています。
| 進む方位 | 緯度 | 経度 |
|---|---|---|
| 北 | 35.771132 | 139.767100 |
| 東 | 35.681149 | 139.877816 |
| 南 | 35.591268 | 139.767100 |
| 西 | 35.681149 | 139.656384 |
円の中でも、歩いて着けるとは限りません
このサイトでいう直線距離は、道路をたどらずに測る球面上の最短距離です。川を渡る橋の位置や駅の出入口、踏切、立ち入りできない敷地によって、実際の道のりは変わります。直線距離に一定の倍率をかければ必ず道のりが出る、という換算はできません。
たとえば半径800mの円を描いても、その範囲全体へ徒歩10分で到着できることは意味しません。候補地を円で絞った後、実際の道路ルートと歩行条件を確認してください。
候補地を比べるときの手順
- 駅や目的地を中心にして、同じ半径の円を描きます。
- 円の中の道路・川・線路を見て、行き来できる方向を確認します。
- 気になる場所を選び、別のルート検索や現地確認で道のりを調べます。
- 家賃・人口・空室・危険区域などは、それぞれの情報源と照合します。
circle-mapはそれらの情報を自動判定するツールではありません。比較する範囲をそろえ、次に何を調べるかを決めるために使ってください。
仕様と更新について
このページは2026年9月14日時点の円の生成処理をもとに作成しました。以前の説明にあった「回転楕円体として計算」「大きな半径でも歪みが出ない」という記述は、現在の実装に合わないため訂正しました。
関連ガイド:住まい選びの距離 / 駅のまわりを同じ半径で比較