*/ class GetBaiduMapResCommand extends CConsoleCommand{ public function run($args) { error_reporting(E_ERROR); set_time_limit(0); $city_list = $this->getcity(1); $city_json = json_encode($city_list); file_put_contents(dirname(__FILE__)."/../data/city.json",$city_json); $z_citylib = new ZCityLib(); $str = file_get_contents(dirname(__FILE__)."/../data/city.json"); $citylist = json_decode($str,true); foreach (array($citylist) as $key => $value) { if($value['sub_city']){ foreach ($value['sub_city'] as $sub_key => $sub_value) { if($sub_value['sub_city']){ foreach ($sub_value['sub_city'] as $grand_key => $grand_value) { if(isset($grand_value['sub_city'])){ foreach ($grand_value['sub_city'] as $area) { echo 'insert'.$area['city_code'].'-'.$z_citylib->addCity($area['city_code'],$area['city_name'],$sub_value['city_code'],$grand_value['city_code'],0); echo "\n"; } } echo 'insert'.$area['city_code'].'-'.$z_citylib->addCity($grand_value['city_code'],$grand_value['city_name'],$sub_value['city_code'],0,0); echo "\n"; } echo 'insert'.$area['city_code'].'-'.$z_citylib->addCity($sub_value['city_code'],$sub_value['city_name'],0,0,0); echo "\n"; } } } } //特别处理几个直辖市 $z_citylib->addCity(10001,'上海市',0,0,0); $z_citylib->addCity(289,'上海市',10001,0,0); $criteria = new EMongoCriteria(); $criteria->parent_province_id('==',289); $criteria->parent_city_id('==',0); $cursor = CityLib::model()->findAll($criteria); foreach ($cursor as $specail) { $specail->parent_province_id = 10001; $specail->parent_city_id = 289; $specail->update(array('parent_province_id','parent_city_id'),true); } $z_citylib->addCity(10002,'重庆市',0,0,0); $z_citylib->addCity(132,'重庆市',10002,0,0); $criteria = new EMongoCriteria(); $criteria->parent_province_id('==',132); $criteria->parent_city_id('==',0); $cursor = CityLib::model()->findAll($criteria); foreach ($cursor as $specail) { $specail->parent_province_id = 10002; $specail->parent_city_id = 132; $specail->update(array('parent_province_id','parent_city_id'),true); } $z_citylib->addCity(10003,'北京市',0,0,0); $z_citylib->addCity(131,'北京市',10003,0,0); $criteria = new EMongoCriteria(); $criteria->parent_province_id('==',131); $criteria->parent_city_id('==',0); $cursor = CityLib::model()->findAll($criteria); foreach ($cursor as $specail) { $specail->parent_province_id = 10003; $specail->parent_city_id = 131; $specail->update(array('parent_province_id','parent_city_id'),true); } $z_citylib->addCity(10004,'天津市',0,0,0); $z_citylib->addCity(332,'天津市',10004,0,0); $criteria = new EMongoCriteria(); $criteria->parent_province_id('==',332); $criteria->parent_city_id('==',0); $cursor = CityLib::model()->findAll($criteria); foreach ($cursor as $specail) { $specail->parent_province_id = 10004; $specail->parent_city_id = 332; $specail->update(array('parent_province_id','parent_city_id'),true); } $z_citylib->addCity(10005,'香港特别行政区',0,0,0); $z_citylib->addCity(2912,'香港特别行政区',10005,0,0); $criteria = new EMongoCriteria(); $criteria->parent_province_id('==',2912); $criteria->parent_city_id('==',0); $cursor = CityLib::model()->findAll($criteria); foreach ($cursor as $specail) { $specail->parent_province_id = 10005; $specail->parent_city_id = 2912; $specail->update(array('parent_province_id','parent_city_id'),true); } $z_citylib->addCity(10006,'澳门特别行政区',0,0,0); $z_citylib->addCity(2911,'澳门特别行政区',10006,0,0); $criteria = new EMongoCriteria(); $criteria->parent_province_id('==',2911); $criteria->parent_city_id('==',0); $cursor = CityLib::model()->findAll($criteria); foreach ($cursor as $specail) { $specail->parent_province_id = 10006; $specail->parent_city_id = 2911; $specail->update(array('parent_province_id','parent_city_id'),true); } } public function getcity($areacode){ $res = CommonFn::simple_http("http://api.map.baidu.com/shangquan/forward/?qt=sub_area_list&ext=1&level=1&areacode=$areacode&business_flag=0"); $temp = json_decode($res); $city_list = array(); $sub_city = array(); if(isset($temp->content->sub)){ foreach ($temp->content->sub as $value) { $sub_city[] = array('city_name'=>$value->area_name,'areacode'=> $value->area_code); } foreach ($sub_city as $key => $value) { if($value['areacode']){ $sub_city[$key] = $this->getcity($value['areacode']); } } } $city_list['city_name'] = $temp->content->area_name; $city_list['city_code'] = $temp->content->area_code; $str = $temp->content->area_name."\n"; echo $str; if($sub_city){ $city_list['sub_city'] = $sub_city; } return $city_list; } }