すべての人に上司がいる場合、私は人のリストを持っています。マップの横には、チェックボックスの形でボスのリストがあります。ボスのチェックボックスをクリックすると、マップ上にボスの人物がマーカーとして表示されます。
上司に人がいない場合に必要ですが、ある場所を中心に地図を表示しますが、javascript に問題があります。
コントローラ
if params[:boss]
bosses_array = params[:boss].map(&:to_i)
@bosses = User.joins(:roles).where("roles.name ='boss' and users.id in (?)", bosses_array)
people = People.where("boss_id in (?)", bosses_array)
if people.count != 0
@json = people.to_gmaps4rails
@markers = true
else
@markers = false
end
else
@bosses = User.joins(:roles).where("roles.name ='boss'")
@markers = false
end
Index.html.erb
<%= gmaps("markers" => {"data" => @json}) %>
<% content_for :scripts do -%>
<script type="text/javascript">
if(<%= @markers %>)
{
Gmaps.map = new Gmaps4RailsGoogle();
Gmaps.load_map = function() {
Gmaps.map.map_options.maxZoom = 15;
Gmaps.map.initialize();
Gmaps.map.markers = <%= raw @json %>;
Gmaps.map.create_markers();
Gmaps.map.callback();
Gmaps.map.map_options.auto_zoom = true;
Gmaps.map.adjustMapToBounds();
};
Gmaps.loadMaps();
}
else
{
Gmaps.map = new Gmaps4RailsGoogle();
Gmaps.load_map = function() {
Gmaps.map.map_options.maxZoom = 15;
Gmaps.map.map_options.center_latitude = "30";
Gmaps.map.map_options.center_longitude = "20";
Gmaps.map.initialize();
//create markers without data, so there are no markers
Gmaps.map.create_markers();
Gmaps.map.callback();
Gmaps.map.map_options.auto_zoom = true;
Gmaps.map.adjustMapToBounds();
};
Gmaps.loadMaps();
}
</script>
ボスに人がいる場合はマーカーが表示されますが、人がいない場合は古いマーカーが削除されずに残ります。