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.