我遇到了一个非常奇怪的问题(至少对我而言)。当我手动输入网址时,地图加载得很好,但是,当我使用链接(rails或href)时,地图将不会加载,直到我点击刷新。
有什么想法吗?
routes.rb
Rails.application.routes.draw do
root 'page#map'
end
application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>LeafletTest</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>
</html>
map.html.erb
<%= link_to("reload page (rails)", root_path) %><br />
<a href="\">reload page (a href)</a><br />
<div id="mapid"></>
page.scss
#mapid {
width: 100%;
height: 600px;
}
page.coffee
$ ->
map = L.map('mapid').setView([
51.505
-0.09
], 13)
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors').addTo map
答案 0 :(得分:1)
我能够通过确保每次渲染地图时都创建新的TileLayer来解决此问题,即turbolinks:load
被触发时。
答案 1 :(得分:0)
在其他一些帖子的帮助下,我终于发现这是由于Turbolinks以及它调用页面加载的方式。将data: { turbolinks: false}
属性添加到我的rails链接有助于清除它。我想这对于非rails链接会起作用(使用正确的格式化)。