problem s google maps a ajaxem

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
xBajci
Člen | 2
+
0
-

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
+
0
-

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
+
0
-

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.

iguana007
Člen | 970
+
0
-

… to už je jen na tobě, jak si ten layout rozdělíš, klidně tam těch snippetů můžeš mít 100 a invalidovat jen ten, který potřebuješ.