我无法从我的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中的数据。任何帮助将不胜感激 - 提前感谢!
答案 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);
}
}
});
所有标记都按预期显示!