egmap Google Maps Yii not saving data to database

I am using egmaps extensions with Yii application it is a very brilliant application. how ever I am having trouble populating database. my database table hotel has two attributes for long and lat. I am not expert in AJAX but i think that ajax is calling controler method. At present I donot have anything in controler method because I donot know what data will come and how?

my code so far is BUT I THINK THIS AJAX IS NOT CALLING THE CONTROLLER SaveCoordinates action


 $gMap->zoom = 6;

            $mapTypeControlOptions = array(

              'position' => EGMapControlPosition::RIGHT_TOP,

              'style' => EGMap::MAPTYPECONTROL_STYLE_HORIZONTAL_BAR

            );


            $gMap->mapTypeId = EGMap::TYPE_ROADMAP;

            $gMap->mapTypeControlOptions = $mapTypeControlOptions;


            // Preparing InfoWindow with information about our marker.

            $info_window_a = new EGMapInfoWindow("<div class='gmaps-label' style='color: #000;'>Hi! I'm your marker!</div>");


            // Setting up an icon for marker.

            $icon = new EGMapMarkerImage("http://google-maps-icons.googlecode.com/files/car.png");


            $icon->setSize(32, 37);

            $icon->setAnchor(16, 16.5);

            $icon->setOrigin(0, 0);


            // Saving coordinates after user dragged our marker.

            $dragevent = new EGMapEvent('dragend', 'function (event) { $.ajax({

                                                        type:"POST",

                                                        url:"'.$this->createUrl('hotel/savecoords').'/'.$model->id.'",

                                                        data:({lat: event.latLng.lat(), lng: event.latLng.lng()}),


                                                        cache:false,

                                                    });}', false, EGMapEvent::TYPE_EVENT_DEFAULT);

if($model->long)

{

            // If we have already created marker - show it

                $marker = new EGMapMarker($model->lat, $model->long, array('title' => Yii::t('catalog', $model->name),

                        'icon'=>$icon, 'draggable'=>true), 'marker', array('dragevent'=>$dragevent));

                $marker->addHtmlInfoWindow($info_window_a);

                $gMap->addMarker($marker);

                $gMap->setCenter($model->lat, $model->long);

                $gMap->zoom = 16;

}

else

{

                // Setting up new event for user click on map, so marker will be created on place and respectful event added.

                $gMap->addEvent(new EGMapEvent('click',

                        'function (event) {var marker = new google.maps.Marker({position: event.latLng, map: '.$gMap->getJsName().

                        ', draggable: true, icon: '.$icon->toJs().'}); '.$gMap->getJsName().

                        '.setCenter(event.latLng); var dragevent = '.$dragevent->toJs('marker').

                        '; $.ajax({'.

                          '"type":"POST",'.

                          '"url":"'.$this->createUrl('hotel/savecoords')."/".$model->id.'",'.

                          '"data"<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/sad.gif' class='bbc_emoticon' alt=':(' />{"lat": event.latLng.lat(), "lng": event.latLng.lng()}),'.

                          '"cache":false,'.

                        '}); }', false, EGMapEvent::TYPE_EVENT_DEFAULT_ONCE));

}

            $gMap->renderMap(array(), Yii::app()->language);

I think your ajax URL is wrong, what is with ‘/’. $model->id? Shouldn’t be like this?




     '"url":"'.$this->createUrl('hotel/savecoords', array('model'=>$model->id)).'",'.



Also, you do not have a success return function set… have you checked the FIREBUG? does it fires an error? If so, then what?

Thanks for using EGMap :)

if i set sucess function then map does not render.

This map control is lovely I wonder how much time developer has taken to develop this:)

ok

1.now how do you check that your ajax is calling in controller?

2.With this map usage it is calling a action in hotel controler. Now what should be written that controller ?

NOTE: moved to proper section "Extensions" instead of "General Discussion for Yii 1.1.x"

Hi all. In case if other gets stuck with this problem here is solution

Extension examples did not show the code for controller but i have shown may be if it is correct admins may add it there.But it works like charm in my app

Solved in case other may get stuck I solved it by changing


POST 

to


GET 

and URL Line


url:"'.$this->createUrl('hotel/savecoords').'/'.$model->id.'", '

to


url':'".$this->createUrl('hotel/savecoords', array('id'=>$model->id))."',`

and controller code is




 public function actionSaveCoords($id)

        {

            $model=$this->loadModel($id);


        // Uncomment the following line if AJAX validation is needed

                // 

        // $this->performAjaxValidation($model);

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

                $model->lat = $_GET['lat'];

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

                $model->long = $_GET['lng'];

            if($model->save())

                {

                    echo 'Thank you for registring your place with '.Yii::app()->name;  

                }

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

            'model'=>$model,

        ));

        }