[ 'class' => LoginBehavior::className(), 'ignore' => [ 'api/geocoder/district', 'api/geocoder/district-info', 'api/geocoder/location', ] ] ]); } /** * showdoc * @catalog 地理相关/国内数据 * @title 省份城市数据 * @description 本接口提供国内行政区域规划数据 * @method get * @url /api/geocoder/district * @param type 必选 int type为0时显示全国行政区域按省份分类树状,type=1时显示字母索引城市列表,默认为0 * @return {"code":0,"msg":"ok","data":"[]"} * @return_param id int 省、市、区、县ID * @return_param name string 名称 * @return_param parent_id int 上级行政区ID * @return_param level string 层级,province、city、district * @return_param list array 下级行政区 * @remark */ public function actionDistrict() { $type = \Yii::$app->request->get('type',0); if($type == 0){ $district = District::getTerritorial(); $district= (new Serializer())->encode($district); } else if($type == 1) { $district = District::getCityIndexList(['city']); $district= (new Serializer())->encode($district); } $data = [ 'code' => 0, 'msg' => 'ok', 'data' => $district ]; return $this->responseHandler($data); } /** * showdoc * @catalog 地理相关/地址解析 * @title 逆地址解析 * @description 本接口提供由坐标到坐标所在位置的文字描述的转换。输入坐标返回地理位置信息 * @method get * @url /api/geocoder/location * @param lat 必选 string 纬度 * @param lng 必选 string 经度 * @return {"code":0,"msg":"ok","data":{"location":{"lat":39.984154,"lng":116.30749},"address":"北京市海淀区北四环西路66号","formatted_addresses":{"recommend":"海淀区中关村中国技术交易大厦","rough":"海淀区中关村中国技术交易大厦"},"address_component":{"nation":"中国","province":"北京市","city":"北京市","district":"海淀区","street":"北四环西路","street_number":"北四环西路66号"},"ad_info":{"nation_code":"156","adcode":"110108","city_code":"156110000","name":"中国,北京市,北京市,海淀区","location":{"lat":40.045132,"lng":116.375},"nation":"中国","province":"北京市","city":"北京市","district":"海淀区"},"address_reference":{"business_area":{"id":"14178584199053362783","title":"中关村","location":{"lat":39.980598,"lng":116.310997},"_distance":0,"_dir_desc":"内"},"famous_area":{"id":"14178584199053362783","title":"中关村","location":{"lat":39.980598,"lng":116.310997},"_distance":0,"_dir_desc":"内"},"crossroad":{"id":"529961","title":"彩和坊路/海淀北一街(路口)","location":{"lat":39.983952,"lng":116.308228},"_distance":61.5,"_dir_desc":"西"},"town":{"id":"110108012","title":"海淀街道","location":{"lat":39.974819,"lng":116.284409},"_distance":0,"_dir_desc":"内"},"street_number":{"id":"595672509379194165901290","title":"北四环西路66号","location":{"lat":39.984089,"lng":116.308037},"_distance":45.8,"_dir_desc":""},"street":{"id":"","title":"北四环西路","location":{"lat":0,"lng":0},"_distance":103.7,"_dir_desc":"南"},"landmark_l2":{"id":"3629720141162880123","title":"中国技术交易大厦","location":{"lat":39.984104,"lng":116.307503},"_distance":0,"_dir_desc":"内"}}}} * @return_param address string 地址描述 * @remark 经纬度为gcj02坐标 */ public function actionLocation() { if(!\Yii::$app->request->isGet){ $data = $this->invaildRequest(); return $this->responseHandler($data); } $lat = \Yii::$app->request->get('lat'); $lng = \Yii::$app->request->get('lng'); $provider = "qqmap"; $key = \Yii::$app->params['mapKey'][$provider]; $geocoder = new Geocoder($key,$provider); $data = $geocoder->getAddress($lat, $lng); return $this->responseHandler($data); } /** * showdoc * @catalog 地理相关/地址解析 * @title 逆地址解析获取行政区域 * @description 本接口提供由坐标到坐标所在位置的文字描述的转换。输入坐标返回行政区域ID信息 * @method get * @url /api/geocoder/district-info * @param lat 必选 string 纬度 * @param lng 必选 string 经度 * @return {"code":0,"msg":"ok","data":{"location":{"lat":39.984154,"lng":116.30749},"address":"北京市海淀区北四环西路66号","province":{"id":"1","name":"北京市"},"city":{"id":"32","name":"北京市"},"district":{"id":"376","name":"海淀区"},"street":{"name":"北四环西路","street_number":"北四环西路66号"},"formatted_addr":"海淀区中关村中国技术交易大厦(彩和坊路)"}} * @return_param address string 地址描述 * @remark 经纬度为gcj02坐标 */ public function actionDistrictInfo() { if(!\Yii::$app->request->isGet){ $data = $this->invaildRequest(); return $this->responseHandler($data); } $form = new GeocoderForm(); $form->attributes = \Yii::$app->request->get(); $data = $form->get_district_info(); return $this->responseHandler($data); } }