駅近で探すという機能を実装したい

HeartRails Express

http://express.heartrails.com/api.html
ググると結構メジャーなウェブサービスみたい。

API は商用、非商用を問わず、無料でご利用になれます。
ご利用条件の詳細に関しましては、国土情報利用約款、HeartRails の利用規約、および免責事項をご覧ください。

との事なので、利用してみます。

これ、HTMLに以下のサンプルを貼り付けるだけで、運用できるとか、便利杉ですわ。

  • 注意:GoogleMapsとの関連もあって少々改造してます。body onloadでも行けると思ふけど、Revelのテンプレートを弄りたくない。
<select id="area" name="area" onchange="HREOnChangeArea();">
<option value="エリアを選択してください">エリアを選択してください</option>
</select>
<select id="line" name="line" onchange="HREOnChangeLine();">
<option value="路線を選択してください">路線を選択してください</option>
</select>
<select id="station" name="station">
<option value="駅を選択してください">駅を選択してください</option>
</select>
<script type="text/javascript" src="http://express.heartrails.com/api/express.js"></script>
<script>
 google.maps.event.addDomListener(window, 'load', initialize);
  window.onload = function(){
    HRELoadPrefecture('prefecture', 'line', 'station');
  }
</script>

あとは、AjaxベースでJsonpを投げてやるだけです。

@searchStation = () ->
  prefecture = $("[name=prefecture] option:selected").text()
  line = $("[name=line] option:selected").text()
  name = $("[name=station] option:selected").text()
  url = "http://express.heartrails.com/api/json"
  ## AJAX処理へ

注意:CoffeeScriptです。

んで、返ってきたレスポンスから緯度経度を切り出して、GoogleMapsへ反映とすれば、あら簡単。
ちなみに、レスポンスは、配列で、中身がJSONですね。

最寄り駅

これも、簡単だった。
まず、検索支点となる緯度経度をHertRailsへ送ってやるだけ。

  • HertRails便利だけど、最新というか、メンテ外の駅もあるみたい。時々答えが空の時があるよ。
    • その場合は、有料のデータ買いましょうって事でしょうね