Egmap - Odświeżanie Zawartości Markerów Z Bazy

Witam serdecznie. Czy ktoś mógłby mnie naprowadzić, ewentualnie pomóc mi w takiej kwestii: poniżej mam działający kod, który wyświetla markery z bazy na mapie egmap, który jest powiązany z widgetem CGRidView. Wszystko działa prawie jak należy poza jednym wyjątkiem - gdy nawiguję pomiędzy rekordami używając paginacji, kasując rekordy lub używając wyszukiwarki - to zawartość mapy się nie odświeża. Zawartość mapy jest pobierana prawidłowo tylko, podczas pierwszego otwarcia strony. Gdzieś pewnie brakuje jakiejś funkcji ajaxowej, która nakazałaby mapie, aby pobrała na nowo markery w zależności od tego, co jest wyświetlane w siatce CGridView. Z góry dziękuję za pomoc i pozdrawiam

Oto mój kod:




<?php

Yii::import('ext.gmap.*');

$gMap = new EGMap();

$gMap->zoom = 2;

$mapTypeControlOptions = array(

  'position'=> EGMapControlPosition::LEFT_BOTTOM,

  'style'=>EGMap::MAPTYPECONTROL_STYLE_DROPDOWN_MENU

);

$gMap->mapTypeControlOptions= $mapTypeControlOptions;

$gMap->setCenter(39.721089311812094, 2.91165944519042);


$dataProvider=$model->search();

  $i = 0;

  if ( $dataProvider->getData() ) {

  foreach ($dataProvider->getData() as $row) {

  $i++;

  // Create marker

  $marker = new EGMapMarker($row['lat'], $row['lng']);

  $gMap->addMarker($marker);

  }

  }

$gMap->renderMap();

//end of egmap


//start search and gridview


Yii::app()->clientScript->registerScript('search', "

$('.search-button').click(function(){

	$('.search-form').toggle();

	return false;

});

$('.search-form form').submit(function(){

	$('#mapa-grid').yiiGridView('update', {

		data: $(this).serialize()

	});

	return false;

});

");


echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?>

<div class="search-form" style="display:none">

<?php $this->renderPartial('_search',array(

	'model'=>$model,

)); ?>

</div><!-- search-form -->


<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'mapa-grid',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(

		'id',

		'idspecies',

		'lat',

		'lng',

		array(

			'class'=>'CButtonColumn',

		),

	),

)); ?>




cgridview ma parametr "afterAjaxUpdate" (http://www.yiiframework.com/doc/api/1.1/CGridView#afterAjaxUpdate-detail), w którym możesz określić funkcję javascript uruchamianą po każdej aktualizacji grida (paginacja, sortowanie, filtrowanie, itp). z JS powinienes moc pobrać identyfikatory wszystkich wyswietlanych w gridzie rekordów i przekazać do własnej funkcji AJAX, która odświeży mape.

Kurcze, coś mi to nie idzie, redguy mógłbyś chociaż jakiś szkic tego nakreślić ?:) Dzięki :)

to mój aktualny kod:




<?php 

$map = $model;

$lat = $model->dlugosc;

$lng = $model->szerokosc;

Yii::import('ext.egmap.*');

$gMap = new EGMap();

$dataProvider=$model->search();

   

$i = 0;

   if ($dataProvider->getData() ) {

   foreach ($dataProvider->getData() as $row) {

   $i++;

   // Create marker

   $marker = new EGMapMarker($row['dlugosc'],$row['szerokosc']);

   $gMap->addMarker($marker);

   }

   }

$gMap->renderMap();

?>


<?php

$this->widget('bootstrap.widgets.TbGridView',array(  

	'dataProvider'=>$model->search(),

        'afterAjaxUpdate'=>'przeladuj',    

	'columns'=>array(

		'dlugosc',

		'szerokosc',

		array(

			'class'=>'bootstrap.widgets.TbButtonColumn',

                     ),

	),

)); ?>


<script type="text/javascript">

    function przeladuj(id, options)

{

    

}


    </script>



sprobuj raczej cos w stylu:


'afterAjaxUpdate'=>'przeladuj();'

bo to ma byc fragment javascriptu… niestety nigdy tego nie uzywalem, wiec ciezko mi powiedziec co moze byc nie tak. musialbys przesledzic kod JS grida, tego co Ci widget generuje na stronie, sprawdz czy developer console pokazuje jakies bledy (chrome, firefox), etc…