Javascript 谷歌地图和ROR 3.1
我正在尝试使用以下代码使ROR 3.1中的工作正常: 在app/assets/javascripts/application.js中Javascript 谷歌地图和ROR 3.1,javascript,ruby-on-rails,google-maps-api-3,Javascript,Ruby On Rails,Google Maps Api 3,我正在尝试使用以下代码使ROR 3.1中的工作正常: 在app/assets/javascripts/application.js中 $(document).ready(function(){ initialize($("div#map_canvas").get(0)); }); function initialize(element) { var latlng = new google.maps.LatLng(-34.397, 150.644); var myOption
$(document).ready(function(){
initialize($("div#map_canvas").get(0));
});
function initialize(element) {
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(element, myOptions);
alert("test");
}
在我的模型视图中,部分app/views/rides/_ride.html.erb
<li>
<div id="map_canvas" style="width:100%; height:100%"></div>
</li>
<%= javascript_include_tag :application,
"http://maps.googleapis.com/maps/api/js?sensor=false" %>
我在app/views/layouts/application.html.erb中有这个
<li>
<div id="map_canvas" style="width:100%; height:100%"></div>
</li>
<%= javascript_include_tag :application,
"http://maps.googleapis.com/maps/api/js?sensor=false" %>
我是ROR的新手,所以对于我所做错事的任何帮助,我都表示感谢。看起来javascript正在运行(出现警告消息),但映射从未显示
谢谢。首先,在使用
时,标记帮助程序应在包含其他默认js文件后,在末尾自动包含application.js(如果存在)
没有加载地图,因为没有正确包含google map js文件。
javascript\u include\u标记
helper获取指向javascript文件的相对和绝对路径。在您的情况下,它只使用带有参数的绝对路径,它不会发送sensor=false之类的参数。这就是为什么您会在代码末尾收到警报,但不会生成映射。如果您检查完成此操作的页面的HTML,那么您将看到将包含的js文件是
<script src="http://maps.googleapis.com/maps/api/js?sensor=false.js" type="text/javascript"></script>
这是错误的。
使用下面的行,您可以以正确的方式包含它,因为在参数中可以正确地传递
<script src="http://maps.googleapis.com/maps/api/js?sensor=false" type=text/javascript"> </script>
在您的视图中
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<body onload="initialize()">
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
在CSS中
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map_canvas { height: 100% }
并将其包含在布局/应用程序中
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
谢谢您的帮助。通过将$(“div#map_canvas”).get(0)
传递给我的initialize()
函数,我想我现在传递的是一个HTML DOM元素,而不是jQuery对象。但是我不明白你说我的javascript_include_标签有什么问题。另外,不管您和文档怎么说,如果我删除应用程序
,生成的HTML不包括该链接。与googleapis的链接似乎运行良好。还有什么想法吗?很好,jQuery-get就是你需要的。当您将绝对路径传递给javascript_include_标记帮助器时,它将其作为js文件的src属性。然而,您需要的是一种将参数传递给请求的方法,请求包含javascript文件。从上面的帖子中,如果你尝试上述两种方法,你会发现生成的HTML会有所不同。助手会向传递的路径添加一个.js(URL后面的a.js是随URL传递的参数)。如果您检查生成的HTML,它会显示这不是您想要的。我没有得到您注意到的.js扩展名(我使用的是Rails 3.1),但是,我认为我通过更改设置为0px的高度/宽度的CSS样式解决了我的问题。我不知道为什么100%的风格不起作用。我切换到blueprint CSS并将高度和宽度设置为精确的px值。嗯。。奇怪。我在Rails 2应用程序上尝试了这一点,发现生成的包含脚本的HTML是错误的。不确定,可能在Rails 3中,助手正确地处理参数。