Duda Con Acción En Controlador

Hola a todos!! hace algunos meses conocí Yii framework, y estoy empezando a realizar una aplicación con el mismo… Tengo un controlador con una función que usa una extension (EGmap), donde tomo los datos de una DB y los grafico en google maps mediante esta extension:




  	private function actionLastId(){

        $sql = "SELECT * FROM gps_reports WHERE  Id=(SELECT MAX(Id) FROM gps_reports)";

        $rows = Yii::app()->db->createCommand($sql)->queryRow();

  	return $rows;

  	}



Me retorna un array como el siguiente:

[b]Array

(

[Id] => 12


[Id_Movil] => 1042


[Latitud] => -34.53627


[Longitud] => -58.57105


[Velocidad] => 2


[Rumbo] => 0


[GPS] => 3


[EVE] => 60


[Fecha_Hora] => 2013-02-10 00:51:50


[NMV] => 6B3C


[Vbat] => 397


[Vmain] => 1317


[Sats] => 70710


[FechaHoraServ] => 2013-02-09 22:17:01

)[/b]

Ahora, tomo ese array para poder usar sus coordenadas en la función:

$ultimoregistro = $this->actionLastId();

$ultimoregistro[‘Latitud’]




  	public function actionUltimaposicion($Mapzoom=5){


	$ultimoregistro = $this->actionLastId();

	

	// flechas

	$flechasur=Yii::app()->request->baseUrl."/image/flechas/Sur.png";

	$flechanorte=Yii::app()->request->baseUrl."/image/flechas/Sur.png";

	$flechaeste=Yii::app()->request->baseUrl."/image/flechas/Sur.png";

	$flechaoeste=Yii::app()->request->baseUrl."/image/flechas/Sur.png";

	$flechasudeste=Yii::app()->request->baseUrl."/image/flechas/Sur.png";

	$flechasudoeste=Yii::app()->request->baseUrl."/image/flechas/Sur.png";

	$flechanoreste=Yii::app()->request->baseUrl."/image/flechas/Sur.png";

	$flechanoroeste=Yii::app()->request->baseUrl."/image/flechas/Sur.png";

	

		

  	$gMap = new EGMap();

	$gMap->setJsName('posicion_gps');

	$gMap->width = 500;

	$gMap->height = 500;

	

	$gMap->zoom = $Mapzoom;

  	

  	$mapTypeControlOptions = array(

		  'position'=> EGMapControlPosition::LEFT_BOTTOM,

		  'style'=>EGMap::MAPTYPECONTROL_STYLE_DROPDOWN_MENU

	);


	$gMap->mapTypeControlOptions= $mapTypeControlOptions;	

	$gMap->setCenter($ultimoregistro['Latitud'],$ultimoregistro['Longitud']); // El centro debe ser tomado de la posición 

	

	$info_window_a = new EGMapInfoWindow('<div><strong>'.$ultimoregistro['Id_Movil'].'</strong></div>'); //Ventana de información

	

	// Configuracion de ícono. Deberia haber un condicional que cambie el ícono segun la orientacion

	$icon = new EGMapMarkerImage("com/files/gazstation.png");

 	$icon->setSize(32, 37);

	$icon->setAnchor(16, 16.5);

	$icon->setOrigin(0, 0);


	// Marcador con la posicion. Aca se determina la posicion del vehiculo 

	$marker = new EGMapMarker($ultimoregistro['Latitud'],$ultimoregistro['Longitud'], array('title' => 'Marker With Custom Image','icon'=>$icon));

//	$marker = new EGMapMarker(-34.308401,-59.316833, array('title' => 'Marker With Custom Image','icon'=>$icon));

	$marker->addHtmlInfoWindow($info_window_a); //Agrega la ventana con la informacion

	$gMap->addMarker($marker); // Invonca la funcion de agregar un marcador con $marker definido anteriormente

	

	// enabling marker clusterer just for fun

	// to view it zoom-out the map

	$gMap->enableMarkerClusterer(new EGMapMarkerClusterer());

// 	$gMap->renderMap();

	

	

	// renderiza la vista con el mapa

	$this->render('ultima',array('model'=>$ultimoregistro,));

	

  	}



Pero no puedo lograr que me funcione de esta manera. Si le paso el array en el render(), y uso el codigo de la extensión en la vista, me funciona bien. Tampoco estoy entendiendo bien, como debería pasar $gMap->renderMap(); para renderizarlo en la vista.

Alguna mano para resolver mi duda?

Gracias

Mauro

Haslo de la siguiente forma




$this->render('ultima',array('gMap'=>$gMap,));



y en la vista ejecutas el render de la siguiente forma




<?php $gMap->renderMap(); ?>



En el array del render del lado derecho tienes la variable que vas a pasar a la vista y del lado izquierdo con que nombre vas a recibir esa variable en la vista

Muchas gracias xavier!! no sabía que las funciones del controlador se podian pasar de la misma manera que una variable. Me funcionó 10 puntos :)