2013-08-09 5 views
0

나는 모든 사람이 상사를 가질 때 사람들 목록을 가지고 있습니다. 그래서 맵 옆에는 체크 박스 형태의 상사 목록이 있습니다. 보스 체크 박스를 클릭하면 보스 사람들이 마커로 맵에 표시됩니다.gmaps4rails - 마커를 제거하고지도를 표시하지 않고 표시합니다.

보스가 어떤 위치에 사람 중심의지도를 표시 할 필요가 있지만 자바 스크립트에 문제가 있습니다.

컨트롤러

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

이전에 직면 한 동일한 문제.

마커를 제거하려면 빈 마커 목록을 전달해야합니다. 그렇지 않으면 이전 마커 목록을 유지하고 표시합니다.

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

다른 방법은 당신이 당신을 도울 것입니다

Gmaps.loadMaps(); 
Gmaps.map.replaceMarkers(''); 

희망 jQuery로 마커를 대체 할 수있다.

감사합니다.