Rails Google地图集成Javascript问题

Rails Google地图集成Javascript问题,javascript,ruby-on-rails,json,google-maps,Javascript,Ruby On Rails,Json,Google Maps,更新I 根据反馈,我将var映射更改为var添加 问题描述 我在Rails 3.0.0.beta2上工作,遵循“菜谱32,在谷歌地图上标记位置”,我遇到了一个路障:我没有看到谷歌地图。我的@adds视图使用@adds.to_json将谷歌地图api与我的模型连接起来。我的数据库包含“纬度”“经度”作为浮点。整个项目可以在以下位置访问: 你能看到我没有用javascript正确连接到json输出的地方吗?你能在我的javascript中看到其他明显的错误吗?提前谢谢 My application.

更新I

根据反馈,我将var映射更改为var添加

问题描述

我在Rails 3.0.0.beta2上工作,遵循“菜谱32,在谷歌地图上标记位置”,我遇到了一个路障:我没有看到谷歌地图。我的@adds视图使用@adds.to_json将谷歌地图api与我的模型连接起来。我的数据库包含“纬度”“经度”作为浮点。整个项目可以在以下位置访问:

你能看到我没有用javascript正确连接到json输出的地方吗?你能在我的javascript中看到其他明显的错误吗?提前谢谢

My application.js文件:

    function initialize() { 
      if (GBrowserIsCompatible() && typeof adds != 'undefined') {
        var adds = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        map.addControl(new GLargeMapControl());

        function createMarker(latlng, add) {
          var marker = new GMarker(latlng);
          var html="<strong>"+add.first_name+"</strong><br />"+add.address;
          GEvent.addListener(marker,"click", function() {
            map.openInfoWindowHtml(latlng, html);
          });
          return marker;
        }

        var bounds = new GLatLngBounds;
        for (var i = 0; i < adds.length; i++) {
          var latlng=new GLatLng(adds[i].latitude,adds[i].longitude)
          bounds.extend(latlng);
          map.addOverlay(createMarker(latlng, adds[i]));
        }
        map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds));
      }
    }  
    window.onload=initialize;
    window.onunload=GUnload;
函数初始化(){
if(GBrowserIsCompatible()&&typeof adds!=“未定义”){
var adds=新的GMap2(document.getElementById(“map”);
赛特中心地图(新格拉特林(37.4419,-122.1419),13);
addControl(新的GlargeMappControl());
函数createMarker(latlng,add){
var标记=新的GMarker(latlng);
var html=“”+add.first\u name+”
“+add.address; addListener(标记“单击”,函数(){ openInfoWindowHtml(latlng,html); }); 返回标记; } var bounds=新的GLatLngBounds; 对于(变量i=0;i
Layouts/adds.html.erb:

  <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=ABQIAAAAeH4ThRuftWNHlwYdvcK1QBTJQa0g3IQ9GZqIMmInSLzwtGDKaBQvZChl_y5OHf0juslJRNx7TbxK3Q" type="text/javascript"></script>

<% if @adds -%>
<script type="text/javascript">
    var adds = <%= raw @adds.to_json %>;
</script>
<% end -%>

var加上=;
Rails控制台输出

a = Add.all
 => [#<Add id: 1, first_name: "Jason", last_name: "Wade", address: "225 Anzavista Ave, San Francisco, CA", address2: "", zip: "94115", city: "San Francisco", phone: "415-280-6678", float: nil, campaign_id: 1, email: "jwade@gmail.com", employer: "Google", occupation: "", created_at: "2010-04-06 14:00:36", updated_at: "2010-04-06 14:00:36", latitude: 37.779623, longitude: -122.445662>] 

ruby-1.9.1-p378 > a.to_json
     => "[{\"address\":\"225 Anzavista Ave, San Francisco, CA\",\"address2\":\"\",\"campaign_id\":1,\"city\":\"San Francisco\",\"created_at\":\"2010-04-06T14:00:36Z\",\"email\":\"jwade@gmail.com\",\"employer\":\"Google\",\"first_name\":\"Jason\",\"float\":null,\"id\":1,\"last_name\":\"Wade\",\"latitude\":37.779623,\"longitude\":-122.445662,\"occupation\":\"\",\"phone\":\"415-280-6678\",\"updated_at\":\"2010-04-06T14:00:36Z\",\"zip\":\"94115\"}]"
a=Add.all
=> [#] 
ruby-1.9.1-p378>a.to_json
=“{”地址“\”“225 Anzavista Ave,旧金山,CA \”,“AddisS2”:\“Actudio ID”:1,\\“城市”:\“旧金山”,\“CealthItAt\\”:“2010-04-06T14:00:36Z”,\“email \”:jwade@gmail.com\“,”雇主\“:”谷歌\“,”名字\“:”杰森\“,”浮动\“:空,\”id \“:1,\”姓氏\“:”韦德\“,”纬度\“:37.779623,\”经度\“:-122.445662,\”职业\“:\”,“电话\“:“415-280-6678\”,“更新地址\“:“2010-04-06T14:00:36Z\”,“zip\”:“94115\”)”
应该是

  var bounds = new GLatLngBounds();
你最初是对的:

  var map = new GMap2(document.getElementById("map"));

在哪里分配javascript变量adds?我假设您正在控制器中设置rails实例变量@adds,但您只分配给js变量maps。如果(GBrowserIsCompatible()&&typeof adds!=“undefined”){是的,将您的
var映射重命名为
var adds
。注意您的编辑,您可以编辑您的问题以显示这些更改。您的问题不是很清楚,您能确认添加的类型未定义并且正在进行初始化吗?完成。(上面反映的变化)还有一个简单的“hello world”测试可以验证吗?我是一名rails开发人员,对javascript.Hi有一点了解。首先,你需要将“var adds=new GMap2(docu)”改回“var map=new GMap2(docu)”。检查这类事情的最简单方法是警报。放置警报(adds)和警报(adds!=“undefined”)在内联javascript中添加定义后。同时在初始化函数中发出警报,检查它是否正常工作。
  var map = new GMap2(document.getElementById("map"));