problem s google maps a ajaxem

- xBajci
 - Člen | 2
 
Caute,
muze nekdo poradit proc pri ajaxovem pozadavku zmizne mapa ?
Mapu nacitam klasicky dle tutorialu Google
Maps V3 API v defaultnim layoutu :
@layout.phtml
<body onload="initialize(lat,lon);">
...
html kod
...
{snippet content}
@{include #content}
{/snippet}
js funkce initialize(lat,lon) je v ext.souboru ktery nacitam v headeru
script.js
function initialize(lat,lon)
{
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(lat, lon), 11);
    }
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
}
default.phtml
@{block #content}
<div  id='map_canvas' style='width:635px; height:500px;' ></div>
 <a href="{plink showAdress!,$row->id}" class='ajax' >Ukaz adresu</a>
{snippet form}
/*zde se vypisuje adresa*/
{/snippet}
MapPresenter.php
<?php
...
..
public function handleShowAdress($id) {
         /*nacitani dat z DB*/
        if (!$this->isAjax())
            $this->redirect('this');
        else {
            $this->invalidateControl('form');
            $this->invalidateControl('content');
        }
 }
?>
No a pri prvnim nacteni se mapa spravne zobrazi. Pak kliknu na ajaxovy odkaz, ktery se spravne provede – adresa se zobrazi, ale zmizne mapa.
Jeste by me zajimalo proc, kdyz zinvaliduju pouze snippet form tk to nefunguje.
Dik za radu.
Editoval xBajci (4. 11. 2010 2:48)

- iguana007
 - Člen | 970
 
Je to jasné, protože mapu načítáš tady:
<body onload="initialize(lat,lon);">
… a když invaliduješ blok content, tak už znovu nezavoláš funkci initialize. Pokud trváš na tom, že má být mapa v daném bloku, tak musíš použít něco jako live fci v jquery nebo volat fci initialize uvnitř toho bloku content, který invaliduješ.

- xBajci
 - Člen | 2
 
Jo, to je ono. Puvodne jsem si to myslel, ale nenapadlo me volat initialize
nekde v tele html.
Tk jsem to urpavil:
default.phtml
...
..
<script type="text/javascript">
    initialize({!$adresa->lat},{!$adresa->lon});
</script>
<div  id='map_canvas' style='width:635px; height:500px;' ></div>
Jeste by me zajimalo proc musim invalidovat cely blok content? proc nestaci invalidovat jednotlive snippety ? Tk se mi nacita cely layout znova po kazdem kliknuti a to je zbytecne.