map_type = MyC('common_map_type', 'baidu', true); } /** * 地址逆解析 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2023-08-07 * @desc description * @param [string] $address [地址信息] */ public function Geocoder($address) { // 配置初始化 $ret = $this->ConfigInit(); if($ret['code'] != 0) { return $ret; } // 根据类型处理 switch($this->map_type) { // 百度 case 'baidu' : $res = json_decode(CurlGet('https://api.map.baidu.com/geocoding/v3/?ak='.$this->config['common_baidu_map_ak_server'].'&address='.$address.'&output=json'), true); if(isset($res['status']) && $res['status'] == 0) { return DataReturn('success', 0, [ 'lng' => $res['result']['location']['lng'], 'lat' => $res['result']['location']['lat'], 'level' => $res['result']['level'], ]); } return DataReturn(empty($res['message']) ? MyLang('common_extend.base.map.address_geocoder_fail_tips') : $res['message'], -1); break; // 腾讯 case 'tencent' : $res = json_decode(CurlGet('https://apis.map.qq.com/ws/geocoder/v1/?key='.$this->config['common_tencent_map_ak_server'].'&address='.$address.'&output=json'), true); if(isset($res['status']) && $res['status'] == 0) { return DataReturn('success', 0, [ 'lng' => $res['result']['location']['lng'], 'lat' => $res['result']['location']['lat'], 'level' => $res['result']['level'], ]); } return DataReturn(empty($res['message']) ? MyLang('common_extend.base.map.address_geocoder_fail_tips') : $res['message'], -1); break; // 高德 case 'amap' : $res = json_decode(CurlGet('https://restapi.amap.com/v3/geocode/geo?key='.$this->config['common_amap_map_ak_server'].'&address='.$address.'&output=json'), true); if(isset($res['status']) && $res['status'] == 1) { $temp = explode(',', $res['geocodes'][0]['location']); return DataReturn('success', 0, [ 'lng' => $temp[0], 'lat' => $temp[1], 'level' => $res['geocodes'][0]['level'], ]); } return DataReturn(empty($res['info']) ? MyLang('common_extend.base.map.address_geocoder_fail_tips') : $res['info'], -1); break; // 天地图 case 'tianditu' : $res = json_decode(CurlGet('http://api.tianditu.gov.cn/geocoder?tk='.$this->config['common_tianditu_map_ak_server'].'&ds={"keyWord":"'.$address.'"}'), true); if(isset($res['status']) && $res['status'] == 0) { return DataReturn('success', 0, [ 'lng' => $res['location']['lon'], 'lat' => $res['location']['lat'], 'level' => $res['location']['level'], ]); } return DataReturn(empty($res['msg']) ? MyLang('common_extend.base.map.address_geocoder_fail_tips') : $res['msg'], -1); break; default : return DataReturn(MyLang('common_extend.base.map.type_not_docked_geocoder_tips').'('.$this->map_type.')', -1); } } /** * 配置初始化 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2023-08-07 * @desc description */ public function ConfigInit() { // 根据类型处理 switch($this->map_type) { // 百度 case 'baidu' : $this->config['common_baidu_map_ak_server'] = MyC('common_baidu_map_ak_server'); if(empty($this->config['common_baidu_map_ak_server'])) { return DataReturn(MyLang('common_extend.base.map.baidu_config_empty_tips'), -1); } break; // 腾讯 case 'tencent' : $this->config['common_tencent_map_ak_server'] = MyC('common_tencent_map_ak_server'); if(empty($this->config['common_tencent_map_ak_server'])) { return DataReturn(MyLang('common_extend.base.map.tencent_config_empty_tips'), -1); } break; // 高德 case 'amap' : $this->config['common_amap_map_ak_server'] = MyC('common_amap_map_ak_server'); if(empty($this->config['common_amap_map_ak_server'])) { return DataReturn(MyLang('common_extend.base.map.amap_config_empty_tips'), -1); } break; // 天地图 case 'tianditu' : $this->config['common_tianditu_map_ak_server'] = MyC('common_tianditu_map_ak_server'); if(empty($this->config['common_tianditu_map_ak_server'])) { return DataReturn(MyLang('common_extend.base.map.tianditu_config_empty_tips'), -1); } break; default : return DataReturn(MyLang('common_extend.base.map.type_not_docked_tips').'('.$this->map_type.')', -1); } return DataReturn('success', 0); } } ?>