我需要老板没有人在某个地方展示地图,但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>
如果老板有一些人标记显示,但没有人旧标记保持不删除。
答案 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('');
希望这会对你有所帮助。
感谢。