Egmap Database

salve a tutti, stavo utilizzando l’estensione egmap, collegata ad un database mysql…,dovrei aggiornarla tramite un form di ricerca! ho proceduto cosi; ho un model attivita in cui ho costruito la funzione search




public function search()

	{


 $criteria=new CDbCriteria;

    $criteria->compare('nome',$this->nome,true);

    $criteria->compare('coordinate',$this->coordinate,true);

    $criteria->compare('categoria',$this->categoria,true);

    $criteria->compare('gruppo',$this->gruppo,true);

    


    	/*if ($this->nome_marca){

                   $criteria->with= array('marches');

                   $criteria->together= true;

                   $criteria->compare('marches.nome', $this->nome_marca,true);// perchè non funzioni merdacciiaaa???

               }

              */

		if ($this->nome_marca){

     				$criteria->addCondition('id in (SELECT attivita_id FROM attivita_marche WHERE marche_id IN (SELECT id FROM marche WHERE nome like :nome_marca))');

                    $criteria->params[':nome_marca']='%'.$this->nome_marca.'%';

        }




        if ($this->tipo_marca){

     				$criteria->addCondition('id in (SELECT attivita_id FROM attivita_marche WHERE marche_id IN (SELECT id FROM marche WHERE tipo_marca like :tipo_marca))');

                    $criteria->params[':tipo_marca']='%'.$this->tipo_marca.'%';            

		}

    return new CActiveDataProvider($this, array(

        'criteria'=>$criteria,

    ));


    

	}



facendo delle prove con delle azioni…in questo caso gruppi (nella tabella attività è presente il campo gruppo…in modo da poterlo filtrare)




public function ActionGruppo($group){

           $model = new Attivita('search');

           $model->unsetAttributes();

           $model->gruppo = $group;

           $this->render('index',array(

						'model'=> $model,

						));

        }




nella view Index usando il widget per la lista dei risultati…,imposto il dataprovider su model->search della funzione…e lo esegue correttamente!




    <!-- Griglia risultati-->

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

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

    'itemView'=>'_view4',

       

)); 



quello che non riesco a capire è come passare a egmap il dataprovider per filtrare la mappa!

attualmente è cosi…ma ovviamente con findAll trova tutti i dati




 <?php 

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

$gMap = new EGMap(); // creo la mappa

 

$gMap->setWidth(800); // grandezza mappa

// it can also be called $gMap->height = 400;

$gMap->setHeight(600); // altezza mappa

$gMap->zoom = 16; 

 

// set center to inca

$gMap->setCenter(43.29843, 13.44948); // centro di macerata

 

// Create GMapInfoWindow

 $info_window = new EGMapInfoWindow('<div>I was living here as a kid!</div>');


   $ciao= Attivita::model()->findAll();


    foreach ($ciao as $points) {

        // Create marker

        $marker = new EGMapMarker($points->latitudine, $points->longitudine, array('title' => $points->nome));


        // finestra informazioni

        $marker->addHtmlInfoWindow($info_window);

        $gMap->addMarker($marker);

    }


 $gMap->renderMap();

?>



se poi eseguissi l’azione actionGruppo…tramite un link:


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

                                                        'id'=>'tiny',

                                                        'items'=>array(

                                                             array('label'=>'Negozi', 'url'=>array('attivita/gruppo','group'=>'negozi')),

                                                               

                                                       

                                                        

                )); ?>

il widget viene filtrato…,ma la mappa rimane come a quella iniziale…con tutti i dati della query findAll, non so come procedere…o se in questo casa il dataprovider non mi serve!, illuminatemi pardon

se può essere utile alla community

nel controller all actionIndex


public function actionIndex()

	{

		

        $model=new Attivita('search');// carica funzione search

		$model->unsetAttributes();  // clear any default values

		if(isset($_GET['Attivita']))

			$model->attributes=$_GET['Attivita'];


		/*$this->render('index',array(

			'model'=>$model,


                        

		));*/


		$dataProvider = $model->search();

        $this->render('index', array('dataProvider' => $dataProvider,'model'=> $model));




            

     

            

            

            

	}



e nella view faccio ciclare il dataprovider


 foreach ($dataProvider->data as $points) {

        // Create marker

        $marker = new EGMapMarker($points->latitudine, $points->longitudine, array('title' => $points->nome));


        // finestra informazioni

        $marker->addHtmlInfoWindow($info_window);

        $gMap->addMarker($marker);

    }


 $gMap->renderMap();