Hallo Group,

ich stelle mit dem GoogleMaps Plugin einen ganzen Haufen Suchergebnisse in eine View:

<td id="my_map">
<% map = GoogleMap.new %>
<% for shipping in @mapped_shippings %>
  <% lng = shipping.pickup_delivery_info.pickup_lng
         lat = shipping.pickup_delivery_info.pickup_lat
map_data = link_to(shipping.title, :controller => "shippings", :action => "show", :id => shipping.id)
         if not (lat == 0 or lng == 0)
map.markers << GoogleMapMarker.new(:map => map, :lat => lat, :lng => lng, :html => map_data )
   end %>
<% end %>
<%= map.to_html %>
<%= map.div %>
</td>

Ausserdem habe ich aber zur Eingrenzung von Suchergebnissen eine Anzahl von check_box's welche ich via Observer überwache:

<%= observe_form( :filter,
                                     :update => :my_map,
                                     :url => { :action => :find },
                                     :loading => 
"Element.show('search-indicator')",
                                     :complete => 
"Element.hide('search-indicator')") %>

In meiner find Action wende ich dann die passenden Filterkriterien an, suche die matchenden Objekte aus der DB. Das klappt auch. Dann versuche ich aber in er View von find einfach folgendes zurückzugeben:

<% map = GoogleMap.new %>
<% for shipping in @mapped_shippings %>
  <% lng = shipping.pickup_delivery_info.pickup_lng
     lat = shipping.pickup_delivery_info.pickup_lat
map_data = link_to(shipping.title, :controller => "shippings", :action => "show", :id => shipping.id)
     if not (lat == 0 or lng == 0)
map.markers << GoogleMapMarker.new(:map => map, :lat => lat, :lng => lng, :html => map_data )
     end %>
<% end %>
<%= map.to_html %>
<%= map.div %>

Ergebnis ist, dass mein td "my_map" das neue DIV erhält, und der alte Inhalt damit ersetzt wird, das ist via FireBug wunderbar zu sehen. Aber das GoogleMaps Plugin basiert auf dem Umstand, dass erst das DIV geladen wird, dann die passenden Javascripte und diese rendern dann onload die eigentliche Google Map in das DIV rein. Genau das funktioniert bei mir jetzt nicht, wenn ich die Action find über den Observer triggere. Ich vermute einfach deswegen, weil die Javascripte von Google hier nur per src Tag referenziert, aber durch die Ajax Action nicht wirklich geladen werden.

Ich habe auch versucht, statt map.to_html mit map.to_js zu arbeiten, da ich im Observer aber ein "update => DOM_ID" angeben muss, rendert er mir dann sämtliches JS im Klartext in die Seite rein.

Hat damit schonmal jemand rumgespielt, und das gleiche Problem gehabt? Wenn ja, bin ich für jeden Hinweis sehr dankbar.

Gruss und Dank
Jan
jan [ a t ] roesner [ d o t ] it_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an