我有一層點和一層線。圖層由jbuilder創建,Leaflet顯示它。 我可以單獨創建和顯示圖層,但不能一起顯示。 對於一個層,map.js
具有這部分用jbuilder構建多個圖層
var featureLayer = L.mapbox.featureLayer()
.loadURL('map/map_data.geojson')
.addTo(map);
featureLayer.on('ready', function(e) {
map.fitBounds(featureLayer.getBounds());
});
map_controller.rb
:
def map_data
start = '1895-01-01'
start = start.to_date
finish = (start + 3.year)
@lines = RestoResidLine.where(resto_date: start..finish).select("id, person_id, resto_loc_id, resid_loc_id, resto_name, resto_date, title_resto, resid_date, title_resid, long_resto, lat_resto, long_resid, lat_resid")
end
map_data.json.jbuilder
:
json.type "FeatureCollection"
json.features @lines do |line|
if (line.long_resto && line.long_resid)
json.type "Feature"
json.geometry do
json.type "LineString"
json.coordinates [[line.long_resto, line.lat_resto], [line.long_resid, line.lat_resid]]
end
end
end
map_data.json是可用的map.js
。但是我不明白Rails的所有這些方面的魔力。
我想要第二個圖層。我首先嚐試在控制器中添加第二個json.features @points do |line|...end
,調用@lines
。但只有最後一個出現。我認爲他們可能會連接。我可以改變@ ...的定義以引入所有需要的信息,這將是一個解決方案;但邏輯會很難看。
所以,我試圖創建另一個文件point_data.json.jbuilder
,並增加map.js
var featureLayer = L.mapbox.featureLayer()
.loadURL('map/point_data.geojson')
.addTo(map);
果然point_data.json被建立,但它是一個2400行的HTML <title>Action Controller: Exception caught</title>
。 map_data.json
構建並正確顯示。
這是一個命名問題嗎?要麼?我對Rails,ActiveRecord和JavaScript Leaflet比較陌生。
代碼:https://bitbucket.org/MtnBiker/crores5/ 我會嘗試上傳該網站,以便您可以在(在)動作中看到它。在Heroku上沒有正確加載。
這不能那麼難。謝謝。