国土地理院API、ヒュべニの式を使って住所から距離を計算しました【FileMaker】
家から近いラーメン屋、コンビニ…など、距離順に情報を並べたい時があります。
距離を計算するためには、まず住所から緯度経度を求め、2つの緯度経度から距離を計算します。 平面だったら三平方の定理で簡単なのですが、地球は丸いのでちょっと複雑になります。
住所から緯度経度を求める
住所から緯度経度を求めるAPIはいくつかあります。 GoogleのAPIでも良いのですが、クレジットカードを登録する必要があり、使いすぎたらお金がかかる仕様になっていて、ちょっと不安です。 そこでとっても良心的なサービス ”国土地理院API”です。
登録なしで利用できます。大量にアクセスするのはやめてくださいね、と注意書きがあります。 マスタ登録するたびにリクエストする、といった常識的な使い方をしていきます。
FileMakerではURLを挿入スクリプトでリクエストします。 返ってきた結果(JSON形式)をちょっと形を整えて、緯度フィールド、経度フィールドに値を入れます。 (結果に[]がついていたのでそれを取り除いたり)
ヒュベニの式を使う

計算式を丸ごと載せてしまうとこんな感じです。 地球の丸みも考慮した計算ができるんですね!
ポータルとボタンバーを使うと、距離を出すためだけのテーブル(家とラーメン屋なら家IDとラーメン屋IDをもったテーブル)を作らずとも、近い距離のリストを表示することができます。

ポータルのフィルタに計算式を入れることができるので、例えば15km圏内のリストを表示させることができます。
ただ、FileMakerのポータルのソートは、フィールドを指定しないとできないので、距離が近い順に並べようと思うと一度どこかフィールドに入れる必要があります。 (私はバーチャルリストを作って、ソートをかけました!)