Yahoo!デベロッパーネットワークで「2点間距離API」というものを見つけました。
地図上の2点の緯度経度を与えるとその間の距離を算出するAPIです。
今まではサイン、コサインを使って複雑な計算をしていましたが、これを使えば簡単にできそうです。
YOLP(地図):2点間距離API – Yahoo!デベロッパーネットワーク
サンプルは次の通りです。PHPです。
東京駅から大阪駅までの距離を求めます。
使うときは、登録して自分のアプリケーションIDを取得する必要があります。
$points[0] = array(139.766084, 35.681382);//東京駅
$points[1] = array(135.494977, 34.701909);//大阪駅
$appid = "{アプリケーションID}";
$output = "json";
$coordinates = implode(",", $points[0]) . "%20" . implode(",", $points[1]);
$url = "https://map.yahooapis.jp/dist/V1/distance";
$url .= "?coordinates=" . $coordinates;
$url .= "&appid=" . $appid;
$url .= "&output=" . $output;
$json = file_get_contents($url);
$arrs = json_decode($json, TRUE);
print $arrs["Feature"][0]["Geometry"]["Distance"];
$points[1] = array(135.494977, 34.701909);//大阪駅
$appid = "{アプリケーションID}";
$output = "json";
$coordinates = implode(",", $points[0]) . "%20" . implode(",", $points[1]);
$url = "https://map.yahooapis.jp/dist/V1/distance";
$url .= "?coordinates=" . $coordinates;
$url .= "&appid=" . $appid;
$url .= "&output=" . $output;
$json = file_get_contents($url);
$arrs = json_decode($json, TRUE);
print $arrs["Feature"][0]["Geometry"]["Distance"];
ちょっと引っかかったのは、座標の指定方法です。
「東経カンマ北緯スペース東経カンマ北緯」とするのですが、サンプルを真似すると次の通りになります。
「coordinates=139.766084,35.681382 135.494977,34.701909」
しかしこれだとエラーになります。スペースは「%20」とする必要があるので次の通りになります。
「coordinates=139.766084,35.681382%20135.494977,34.701909」
実行すると距離がキロメートル単位で表示されます。
こうなると座標も自動的に取得したいところですが、Yahoo!には飲食店などの位置を取得するAPIはありますが、駅など公共機関を取得するAPIがありません(あるのかもしれませんが見つかりませんでした)。
Googleは「東京駅」から座標を取得することができますので、GoogleとYahoo!を組み合わせる、ということになりそうです。
コメント