使用jQuery和Rails在Google Map上显示数据

时间:2010-06-02 22:16:18

标签: jquery ruby-on-rails google-maps

我无法从我的Rails应用中获取JSON数据,以便使用jQuery在Google地图上显示。在我的控制器中:

class PlacesController < ApplicationController

  respond_to :html, :xml, :json

  # GET /places
  # GET /places.xml
  # GET /places.json
  def index
    @places = Place.all

    respond_to do |format|
      format.html # index.html.erb 
      format.json { render :json => @places }
      format.xml  { render :xml => @places }
    end
  end

然后在我的map.js文件中:

$(document).ready(function(){
    if (GBrowserIsCompatible()) {
    var map = new google.maps.Map2($("#map").get(0));
        var burnsvilleMN = new GLatLng(44.797916,-93.278046);
        map.setCenter(burnsvilleMN, 8);
        map.setUIToDefault();

        $.getJSON("/places", function(json) {
            if (json.Places.length > 0) {
                for (i=0; i<json.Places.length; i++) {
                    var place = json.Places[i];
                    addLocation(place);
                }
            }
        });

        function addLocation(place) {
            var point = new GLatLng(place.lat, place.lng);      
            var marker = new GMarker(point);
            map.addOverlay(marker);
        }
      }
});

$(window).unload( function () { GUnload(); } );

我已经从this tutorial调整了我的代码 - 地图显示正常但没有我的标记存在(手动添加)。我正在使用Rails 3 beta 3和Ruby 1.9.1。输出到JSON似乎很好 - 我可以访问/places.json中的数据。任何帮助将不胜感激 - 提前感谢!

2 个答案:

答案 0 :(得分:1)

您是否尝试将getJSON调用中的路径更改为“/places.json”?

答案 1 :(得分:1)

解决!我没有意识到,但Ruby输出JSON作为一个简单的对象数组,所以json.Places.length没有意义 - json.length工作得很好。新代码现在是:

$.getJSON("/places", function(json) {
  if (json.length > 0) {
    for (i=0; i<json.length; i++) {
      var place = json[i];
      addLocation(place);
    }
  }
});

所有标记都按预期显示!