gmaps4rails - 删除标记并显示没有它们的地图

时间:2013-08-09 13:29:05

标签: reload gmaps4rails markers

当每个人都有他的老板时,我有人名单。所以在地图旁边是复选框形式的老板列表。如果我点击boss复选框,老板的人就会在地图上显示为标记。

我需要老板没有人在某个地方展示地图,但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>

如果老板有一些人标记显示,但没有人旧标记保持不删除。

1 个答案:

答案 0 :(得分:0)

我之前遇到的同样问题。

要删除标记,我们需要传递空标记列表,否则它会保留以前的标记列表并显示它们。

Gmaps.map.initialize();
//create markers without data, so there are no markers
Gmaps.map.markers = []
Gmaps.map.create_markers();

其他方式是,您可以用jquery

替换标记
Gmaps.loadMaps();
Gmaps.map.replaceMarkers('');

希望这会对你有所帮助。

感谢。

相关问题