当每个人都有他的老板时,我有一个人名单。所以地图旁边是复选框形式的老板列表。如果我点击老板复选框,老板的人会在地图上显示为标记。
当老板没有人以某个地方为中心显示地图时,我需要,但是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
索引.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>
如果老板有一些人标记会显示,但是当没有人时,旧标记会保留而不删除。