在Google地图中添加标记 - Ruby on Rails

时间:2013-04-18 04:00:26

标签: javascript google-maps google-geocoder

请帮我解决这个问题。
我有数据库存储谷歌地图(lat,lng)的一些点,我想在谷歌地图中显示它们 这是我的控制器

@location = SharedInfo.all

这是视图中的javascript

function DisplayTraficCir(loca) {
for (var location in loca){
  var myLatLng = new google.maps.LatLng(location.latitude,location.longitude)
  var marker = new google.maps.Marker({
    position: myLatLng,
    map: map
  });
}
// map.setCenter(location);
}

我通过以下方式调用了这个函数:

DisplayTraficCir(<%@location%>);

我不知道为什么它不起作用。也许它根本不会在“for”语句中执行代码块 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

Maps API不是Ruby API。它是一个JavaScript API。

你说你正在调用这样的JavaScript函数:

DisplayTraficCir(<%@location%>);

但事实并非如此。这是您的 Ruby 模板代码,而不是您的JavaScript代码。

您正尝试一次调试两个问题。相反,一次调试一个问题:

  1. 如何使Maps API与Jav​​aScript,CSS和HTML配合使用。 Ruby,Rails和您的服务器代码完全不涉及此

  2. 一旦您使用了JavaScript,CSS和HTML代码,如何从Rails生成该代码。

  3. 换句话说,要调试JavaScript代码,请查看 JavaScript 代码,而不是生成它的Ruby代码。

    您可以在任何浏览器中使用开发人员工具调试JavaScript代码。 Chrome特别好。一件容易的事就是在有问题的函数调用之前插入此语句:

    debugger;
    

    然后在打开Chrome开发者工具的情况下加载您的页面,它将在该行的JavaScript调试器中停止。然后你可以查看变量,查看浏览器看到的实际代码,逐行跟踪代码,以及各种类似的好事。

    执行此操作时,请忘记完全关于您的Rails代码。在这一点上,它根本不相关。浏览器永远不会看到该代码,它只能看到您的Ruby代码生成的生成的

    将此调试任务分成两个单独的部分,这样可以更容易地弄清楚发生了什么。