pski
January 27, 2009, 12:08am
1
Witam mam taki problem:
W pliku RJS chce zrobić update mapy.
Jednak efekt jest taki że powstaje puste miejsce o rozmiarach mapy, a samej mapy ni śladu.
widok
[quote]form_remote_tag :url => {:action => ‘poka’} do
text_field_tag :miasto2
submit_tag “Dodaj”, :onclick => “Element.hide(‘form_2’), Element.show(‘loading’)”
end
<div id="mapa">
render :partial => 'mapa'
</div>[/quote]
partial mapa:
[quote]GMap.header
@map.to_html
@map.div (:width => 280, :height => 280)[/quote]
controller:
[quote]@location2 = params[:miasto2]
coordinates2 = GoogleGeocoder.geocode(@location2 )
@map = GMap.new(“map”)
@map.control_init (:large_map => true,:map_type => false)
@map.center_zoom_init ([coordinates2.lat, coordinates2.lng], 13)[/quote]
.rjs
inne rzeczy z partiala sie pokazuja ale mapa nie.
używam pluginów:
ym4r_gm
GeoKit
W czym jest problem?
drogus
January 27, 2009, 8:24am
2
Zainstaluj sobie Firebuga w firefoxie i zobacz jaki javascript generuje się w odpowiedzi na to zapytanie, możesz też tutaj wkleić, bo chętnie bym pomógł, ale nie mam czasu obczajania pluginu, którego używasz do map.
Przejrzyj moją prezentację . Co prawda nie jest on najświeższa, ale krok po kroku było tam napisane co trzeba zrobić.
Najlepiej zacząć w wersji bez Ajaxa i sprawdzić, czy działa.
pski
January 27, 2009, 6:54pm
4
Cześć.
Firebug pisze:
[quote]try {
Element.show(“distance”);
new Insertion.Bottom(“distance”, " ||\u003Cbr\u003E0.0 km.\u003Cbr\u003E||\u003Cbr\u003E");
new Insertion.Bottom(“distance”, " Kaczyce \u003Cbr\u003E");
Element.show(“form_2”);
Element.hide(“loading”);
new Insertion.Bottom(“mapa”, “\n\n \u003Cscript src=“http://maps.google.com/maps?file=api\u0026amp
;v=2.x\u0026amp;key=ABQIAAAAzMUFFnT9uH0xq39J0Y4kbhTJQa0g3IQ9GZqIMmInSLzwtGDKaBR6j135zrztfTGVOm2QlWnkaidDIQ
\u0026amp;hl=” type=“text/javascript”\u003E\u003C/script\u003E\n\u003Cscript src=”/javascripts/ym4r-gm
.js" type=“text/javascript”\u003E\u003C/script\u003E\n\u003Cstyle type=“text/css”\u003E\n v:* {
behavior:url(#default #VML);}\n\u003C/style\u003E\n \u003Cscript type=“text/javascript”\u003E
\nvar map;\nwindow.onload = addCodeToFunction(window.onload,function() {\nif (GBrowserIsCompatible()
) {\nmap = new GMap2(document.getElementById(“map”));\nmap.setCenter(new GLatLng(50.7260568,21.4030244
),13);map.addControl(new GLargeMapControl());\n}\n});\n\u003C/script\u003E\n \u003Cdiv id=“map
" style=“width:280px;height:280px” \u003E\u003C/div\u003E\n\n\n”);
} catch (e) { alert(‘RJS error:\n\n’ + e.toString()); alert(‘Element.show(“distance”);\nnew Insertion
.Bottom(“distance”, " ||\u003Cbr\u003E0.0 km.\u003Cbr\u003E||\u003Cbr\u003E");\nnew Insertion
.Bottom(“distance”, " Kaczyce \u003Cbr\u003E");\nElement.show(“form_2”);\nElement.hide(“loading
“);\nnew Insertion.Bottom(“mapa”, “\n\n \u003Cscript src=\“http://maps.google.com/maps
?file=api\u0026amp;v=2.x\u0026amp;key=ABQIAAAAzMUFFnT9uH0xq39J0Y4kbhTJQa0g3IQ9GZqIMmInSLzwtGDKaBR6j135zrztfTGVOm2QlWnkaidDIQ
\u0026amp;hl=\” type=\“text/javascript\”\u003E\u003C/script\u003E\n\u003Cscript src=\”
/javascripts/ym4r-gm.js\” type=\“text/javascript\”\u003E\u003C/script\u003E\n\u003Cstyle type
=\“text/css\”\u003E\n v:* { behavior:url(#default #VML);}\n\u003C/style\u003E\n \u003Cscript
type=\“text/javascript\”\u003E\nvar map;\nwindow.onload = addCodeToFunction(window.onload,function
() {\nif (GBrowserIsCompatible()) {\nmap = new GMap2(document.getElementById(\“map\”));\nmap.setCenter
(new GLatLng(50.7260568,21.4030244),13);map.addControl(new GLargeMapControl());\n}\n});\n\u003C/script
\u003E\n \u003Cdiv id=\“map\” style=\“width:280px;height:280px\” \u003E\u003C/div
\u003E\n\n\n”);’); throw e }[/quote]
Wszystko działa (distance) oprócz mapy
Szczerze nie znam się na javascripcie.
Więc może tu jest gdzieś błąd.
Logi są w porządku.
Bez ajaxu wszystko działa poprawnie.
pozdrawiam
gotar
January 27, 2009, 9:54pm
5
page.insert_html :bottom, :mapa, :partial => ‘mapa’, :object => @map
a czy nie powinno byc tam jakos tak? nie pamietam za abrdzo skladni, ale jak robisz update to chyba replace a nie insert, wtedy :bottom wywalic :mapa to id jakiegos div pewnie wiec tam ma byc a partial chyba tez ok, nie wiem czy nie wystarczy :partial => @map ale to juz malo wazne
page.replace_html :mapa, :partial => @map
pski
January 27, 2009, 10:02pm
6
nie działa, log: Couldn’t find template file for ym4r/gm_plugin/g_maps/_g_map
próbowałem insert i replace i nic.
Tak jakby nie chciały się odpalić skrypty zawarte w partialu mapa (bo przesłane są jak widać po raporcie Firebuga)
z render :partial => ‘mapa’ w kontrolerze.
Też nie działa
gotar
January 28, 2009, 6:29pm
7
log: Couldn’t find template file for ym4r/gm_plugin/g_maps/_g_map
czy tu nie pisze dla ciebei co jest nie tak?