Example #1
0
 public function run()
 {
     Yii::app()->getModule('apartments');
     $criteria = $this->criteria ? $this->criteria : new CDbCriteria();
     if ($this->filterOn) {
         Yii::app()->controller->aData['searchOnMap'] = true;
         $this->renderFilter($criteria);
     }
     if (param('useYandexMap', 1)) {
         echo $this->render('application.modules.apartments.views.backend._ymap', '', true);
         CustomYMap::init()->createMap();
     } elseif (param('useGoogleMap', 1)) {
         CustomGMap::createMap();
     } else {
         echo '<div id="osmap"></div>';
         CustomOSMap::createMap();
     }
     $lang = Yii::app()->language;
     $criteria->select = 'lat, lng, id, type, address_' . $lang . ', title_' . $lang . ', address_' . $lang;
     $ownerActiveCond = '';
     if (param('useUserads')) {
         $ownerActiveCond = ' AND owner_active = ' . Apartment::STATUS_ACTIVE . ' ';
     }
     $criteria->addCondition('lat <> "" AND lat <> "0" AND active=' . Apartment::STATUS_ACTIVE . ' AND (owner_id=1 OR owner_id>1 ' . $ownerActiveCond . ')');
     $apartments = Apartment::findAllWithCache($criteria);
     if (param('useYandexMap', 1)) {
         $lats = array();
         $lngs = array();
         foreach ($apartments as $apartment) {
             $lats[] = $apartment->lat;
             $lngs[] = $apartment->lng;
             CustomYMap::init()->addMarker($apartment->lat, $apartment->lng, $this->render('application.modules.apartments.views.backend._marker', array('model' => $apartment), true), true, $apartment);
         }
         if ($lats && $lngs) {
             CustomYMap::init()->setBounds(min($lats), max($lats), min($lngs), max($lngs));
             if ($this->withCluster) {
                 CustomYMap::init()->setClusterer();
             } else {
                 CustomYMap::init()->withoutClusterer();
             }
         } else {
             $minLat = param('module_apartments_ymapsCenterX') - param('module_apartments_ymapsSpanX') / 2;
             $maxLat = param('module_apartments_ymapsCenterX') + param('module_apartments_ymapsSpanX') / 2;
             $minLng = param('module_apartments_ymapsCenterY') - param('module_apartments_ymapsSpanY') / 2;
             $maxLng = param('module_apartments_ymapsCenterY') + param('module_apartments_ymapsSpanY') / 2;
             CustomYMap::init()->setBounds($minLng, $maxLng, $minLat, $maxLat);
         }
         CustomYMap::init()->changeZoom(0, '+');
         CustomYMap::init()->processScripts(true);
     } elseif (param('useGoogleMap', 1)) {
         foreach ($apartments as $apartment) {
             CustomGMap::addMarker($apartment, $this->render('application.modules.apartments.views.backend._marker', array('model' => $apartment), true));
         }
         if ($this->withCluster) {
             CustomGMap::clusterMarkers();
         }
         CustomGMap::setCenter();
         CustomGMap::render();
     } elseif (param('useOSMMap', 1)) {
         foreach ($apartments as $apartment) {
             CustomOSMap::addMarker($apartment, $this->render('application.modules.apartments.views.backend._marker', array('model' => $apartment), true));
         }
         if ($this->withCluster) {
             CustomOSMap::clusterMarkers();
         }
         CustomOSMap::setCenter();
         CustomOSMap::render();
     }
 }