Cri*_*ano 5 javascript jquery google-maps ruby-on-rails
我在官方文档中遵循了这些简单的说明:https://developers.google.com/maps/documentation/javascript/tutorial
当我第一次打开网站时,一切正常.地图显示正常.问题是当我导航到网站的其他部分时.在我返回到地图应该的位置后,地图不会显示.
这是基本结构:
<ul>
<li><%= link_to "Home", root_path %></li>
<li><%= link_to "About", about_path %></li>
<li><%= link_to "Contact", contact_path %></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
"联系方式"中的Javascript:
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=xxx&sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(-34.397, 150.644),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<h1>Contact</h1>
<p>
Address & phone number
</p>
<div id="map-canvas" style="width: 35em; height: 35em;"/>
Run Code Online (Sandbox Code Playgroud)
因此,如果我在"主页"页面上打开该网站,然后导航到"联系人",则没有地图.但是,如果我刷新"联系"网站,则会显示地图.可能有什么问题?
谢谢.
EDIT1:
我试着把我的代码放在ready函数中:
$.getScript('https://maps.googleapis.com/maps/api/js?key=xxx&sensor=false');
var mapOptions = {
center: new google.maps.LatLng(-34.397, 150.644),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,代码在此行中断:
center: new google.maps.LatLng(-34.397, 150.644),
Run Code Online (Sandbox Code Playgroud)
您是否在启用 turbolinks 的情况下使用 Rails 4?如果是这样,load当您从主页移动到联系人页面时,该事件将不会触发 - 但点击刷新会完全加载整个页面,因此加载事件确实会触发。这将与您所描述的行为一致。
除了以下'load'行之外,尝试在脚本块的末尾添加:
google.maps.event.addDomListener(window, 'page:load', initialize);
Run Code Online (Sandbox Code Playgroud)
很难判断可能出了什么问题。当您说您导航到网站的其他部分时,它们是否都包含在一个 HTML 文件中?或者也许它们是通过 AJAX 动态加载的?当地图未正确显示时,尝试在地图上触发调整大小事件。
google.maps.event.trigger(map, 'resize');
Run Code Online (Sandbox Code Playgroud)
或者,当您“导航”到它应该在但未显示的某个位置后,可以调用此方法。
| 归档时间: |
|
| 查看次数: |
7256 次 |
| 最近记录: |