diff --git a/application/admin/common.php b/application/admin/common.php index f3d1e99..4907228 100755 --- a/application/admin/common.php +++ b/application/admin/common.php @@ -194,4 +194,51 @@ if (!function_exists('build_heading')) { } return $result; } + + + + function getLocation($address){ + + + try { + // 百度地图 API 的 URL 和 API Key + $apiKey = config('map.baidu_app_key'); // 替换为您的 API Key + +// 构建请求 URL + $url = "http://api.map.baidu.com/geocoding/v3/?address=" . urlencode($address) . "&output=json&ak=" . $apiKey; + +// 使用 cURL 请求接口 + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + $response = curl_exec($ch); + curl_close($ch); + +// 解析返回的 JSON 数据 + $data = json_decode($response, true); + +// 获取经纬度 + if ($data['status'] == 0) { + $latitude = $data['result']['location']['lat']; // 纬度 + $longitude = $data['result']['location']['lng']; // 经度 + + + return [ + 'lat' => $latitude, + 'lng' => $longitude, + ]; + } else { + return []; + //echo "地址解析失败: " . $data['msg'] . "\n"; + } + + }catch (Exception $exception){ + + return []; + } + + + + } + } diff --git a/application/admin/controller/workers/Worker.php b/application/admin/controller/workers/Worker.php index 27d11fd..fdbb5df 100644 --- a/application/admin/controller/workers/Worker.php +++ b/application/admin/controller/workers/Worker.php @@ -2,6 +2,7 @@ namespace app\admin\controller\workers; +use app\admin\model\Area; use app\admin\model\AuthGroup; use app\admin\model\Item; use app\admin\model\Order; @@ -158,6 +159,18 @@ class Worker extends Backend $this->model->validateFailException()->validate($validate); } $params['admin_id'] = $this->auth->id; + + if(!empty($params['area_id'])){ + + $area = Area::getByCode($params['area_id']); + if($area){ + $location = getLocation($area->merge_name); + if(!empty($location)){ + $params['lng'] = $location['lng']; + $params['lat'] = $location['lat']; + } + } + } $result = $this->model->allowField(true)->save($params); $item_map = model('item')->getAll(); $item_map = array_column($item_map, 'level', 'id');