ポイントのレイヤーとラインのレイヤーがあります。レイヤはjbuilderによって作成され、Leafletがそれを表示します。レイヤーを個別に作成して表示することはできますが、一緒に表示することはできません。1つのレイヤーの場合、map.js
これは部分的にあります
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の魔法を理解していません。
ポイントのある2番目のレイヤーが必要です。最初に、コントローラーに2番目のjson.features @points do |line|...end
呼び出し@lines
を追加してみました。しかし、最後のものだけが表示されます。連結するのではないかと思いました。@ ...の定義を変更して、必要なすべての情報を取り込むことができるので、それが1つの解決策になります。しかし、論理は醜いでしょう。
そこで、別のファイル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、JavaScriptLeafletにかなり慣れていません。
コード:https://bitbucket.org/MtnBiker/crores5/サイトをアップロードして、(動作していない)動作を確認できるようにします。Herokuに正しく読み込まれません。
これはそれほど難しいことではありません。ありがとうございました。
私はpoint_dataを見つけるためのルートを設定していなかったので、どうやらjbuilderがそれを必要としていたようです。
get 'map' => 'map#index'
get 'map/map_data', :defaults => { :format => 'json' }
get 'map/point_data', :defaults => { :format => 'json' }
get 'map/line_data', :defaults => { :format => 'json' }
最初の2つはすでに存在していましたが、後の2つを追加するのを忘れました。私は現在、後者の2つを使用しています。最初はオリジナルでした、そして私はそれをこれらの2つに分けました。
マップがHerokuとlocalhostで異なる動作をするときに、助けになったのは掘り下げたことです。
この作品を忘れてしまった。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加