share('nav', 2); } //自动设置默认地区 public function setLocation(Request $request) { $lat = $request->lat; $lng = $request->lng; if (!$lat || !$lng) { return $this->error('设置失败'); } $location = $this->getDefaultLocation(); if (!$location['real_area']) { $url = "http://api.map.baidu.com/geocoder"; $client = new Client(); $response = $client->request('GET', $url, [ 'timeout' => 30, 'query' => [ 'location' => $lat . "," . $lng, 'output' => 'json', ], ]); if ($response->getStatusCode() == 200) { $data = json_decode($response->getBody()->getContents(), true); $city = $data['result']['addressComponent']['city']; } else { return $this->location($url); } $area = Area::where('name', $city)->first(); //如果地址没有开通,默认哈尔滨 if ($area->status != 1) { $area = Area::where('sn', '230100')->first(); $lat = $area->lat; $lng = $area->lng; } Session::put('lat', $lat); Session::put('lng', $lng); Session::put('area', $area); Session::put('real_area', $area); return $this->success($city); } else { Session::put('lat', $lat); Session::put('lng', $lng); return $this->error(json_encode($location)); } } //设置地区 public function setArea(Request $request) { $area_id = $request->area_id; if ($area_id) { $area = Area::find($area_id); } else { $area = [ "id" => 0, "sn" => 0, "psn" => 0, "province" => "全国", "city" => "全国", "area" => "", "name" => "全国", ]; $area = (object) $area; } session(['area' => $area]); $url = route('pick.lists'); $callback = session('address_callback', ''); if ($callback) { $url = $callback; } return $this->success('设置成功', $url); } //设置城市 public function address(Request $request) { $name = $request->name ?? ''; $callback = $request->callback ?? ''; if ($callback) { session(['address_callback' => $callback]); } $location = $this->getDefaultLocation(); if (empty($name)) { $addresses = Area::where('psn', 0)->get(); } else { $addresses = Area::where('name', 'like', "%{$name}%")->where('type', '地级')->get(); } $hots = Area::where('hot', 1)->get(); return view('location.address', compact('addresses', 'location', 'hots', 'name')); } }