initialize(); } protected function initialize() { $this->uid = $this->request->uid(); $this->userInfo = $this->request->user(); } /** * @return array */ public function getAddress(): array { list($latitude, $longitude) = $this->request->location(); $address = $this->geoLbscoder($latitude, $longitude); if ($address) { return [ 'address' => $address['address_component'], 'formatted_addresses' => $address['formatted_addresses'], 'info' => $address['ad_info'], ]; } return []; } /** * 经纬度反向解析地址 * @param string $latitude * @param string $longitude * @return mixed|null */ private function geoLbscoder(string $latitude, string $longitude) { if (!$latitude || !$longitude) { return null; } $mapKey = sys_config('tengxun_map_key'); $mapKSecret = sys_config('tengxun_map_secret', ''); if (!$mapKSecret) $mapKSecret = null; if (!$mapKey) { return null; } try { $locationOption = new LocationOption($mapKey, $mapKSecret); $locationOption->setLocation($latitude, $longitude); $location = new Location($locationOption); $res = $location->request(); if ($res->error) { return null; } if ($res->status) { return null; } if (!$res->result) { return null; } return $res->result; } catch (\Throwable $e) { return null; } } }