0

请帮助我克服这个问题。
我有存储谷歌地图(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”语句中的代码块。
谢谢你的帮助。

4

1 回答 1

0

地图 API 不是 Ruby API。它是一个 JavaScript API。

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

DisplayTraficCir(<%@location%>);

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

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

  1. 如何让 Maps API 与 JavaScript、CSS 和 HTML 一起工作。Ruby、Rails 和您的服务器代码根本不参与其中

  2. 一旦你有了工作的 JavaScript、CSS 和 HTML 代码,如何从 Rails 生成这些代码。

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

您可以在任何浏览器中使用开发人员工具调试 JavaScript 代码。铬特别好。一件简单的事情是在相关函数调用之前立即插入此语句:

debugger;

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

这样做时,请完全忘记您的 Rails 代码。在这一点上根本不相关。浏览器永远不会看到该代码,它看到的只是Ruby 代码生成的 JavaScript。

像这样将这个调试任务分成两个独立的部分,这样更容易弄清楚发生了什么。

于 2013-04-18T05:07:14.660 回答