2

住所に基づいて場所を表示するためにジオコーダーを使用しようとしています。

私の質問は、ユーザーがデータベースに挿入したアドレスからLatとLongを取得したら、インタラクティブマップを表示するためにビューに何を配置するかです。

私の住所モデル

 belongs_to <another model>
 attr_accessible <all addresses attributes including latitude and longitude>

 geocoded_by :address

 after_validation :geocode, :if => :address_changed?

緯度と経度のフィールドは、住所を挿入すると自動的に計算されます。

RyanのRailCastチュートリアルに従いましたが、最後に、静止画像を表示する代わりに、マップを表示したいのですが、Googleマップはインタラクティブなスタイルです。どうすればこれを達成できますか?

Google-Maps-for-Railsを見てみましたが、ショービューの場所で単一の地図を取得する方法がどれほどうまくいくかを理解できなかった場合。

4

2 に答える 2

2

Google-Maps-for-Rails を詳しく見てみましょう。その宝石はそれを簡単にし、ビューでインタラクティブなマップを取得する方法についての指示は非常に明確です:

(あなたの Address モデルは User モデルに属していると思います。必要に応じて名前を変更してください。)

マップ上に特定の 1 人のユーザーだけが必要な場合は、もちろんコントローラーを変更できます。

@json = User.find(params[:id]).address.to_gmaps4rails

あなたの見解では:

<%= gmaps4rails(@json) %>
于 2012-05-10T18:13:56.977 に答える
2

Google Maps API の役立つ例が多数あります。こちら から入手できます。最も単純なケースでは、次のようなことができます。

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  var lat = <%= @model.latitude %>, 
      lon = <%= @model.longitude %>,
      map;
  function initialize() {
    var myOptions = {
      center: new google.maps.LatLng(lat, lon)
    };
    map = new google.maps.Map(document.getElementById('map_canvas'),
        myOptions);
  }

  google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map_canvas"></div>

@model.latitude@model.longitudeをモデル内の対応するジオコーディングされたフィールドに置き換えるだけです。

于 2012-05-10T18:14:18.027 に答える