| <?php | |
| 
 | |
| $app->get('/api/geocode', function() use($app) { | |
|   $params = $app->request()->params(); | |
| 
 | |
|   if( | |
|     (k($params, 'latitude') !== null && k($params, 'longitude') !== null) | |
|     || k($params, 'input') !== null | |
|   ) { | |
| 
 | |
|     $response = [ | |
|       'latitude' => null, | |
|       'longitude' => null, | |
|       'locality' => null, | |
|       'region' => null, | |
|       'country' => null, | |
|       'best_name' => null, | |
|       'full_name' => null, | |
|       'postal-code' => null, | |
|       'timezone' => null, | |
|       'offset' => null, | |
|       'seconds' => null, | |
|       'localtime' => null, | |
|     ]; | |
| 
 | |
|     if(k($params, 'input')) { | |
|       $adr = p3k\Geocoder::geocode($params['input']); | |
|     } else { | |
|       $lat = (float)$params['latitude']; | |
|       $lng = (float)$params['longitude']; | |
|       $response['latitude'] = $lat; | |
|       $response['longitude'] = $lng; | |
|       $adr = p3k\Geocoder::adrFromLocation($lat, $lng); | |
|     } | |
| 
 | |
|     if($adr) { | |
|       $response['latitude'] = $adr->latitude; | |
|       $response['longitude'] = $adr->longitude; | |
|       $response['locality'] = $adr->localityName; | |
|       $response['region'] = $adr->regionName; | |
|       $response['country'] = $adr->countryName; | |
|       $response['best_name'] = $adr->bestName; | |
|       $response['full_name'] = $adr->fullName; | |
|       $response['postal-code'] = $adr->postalCode; | |
|     } | |
| 
 | |
|     $tz = p3k\Timezone::timezone_for_location($response['latitude'], $response['longitude'], k($params,'date')); | |
|     $timezone = false; | |
|     if($tz) { | |
|       $timezone = new p3k\timezone\Result($tz, k($params, 'date')); | |
|     } | |
| 
 | |
|     if($timezone) { | |
|       $response['timezone'] = $timezone->name; | |
|       $response['offset'] = $timezone->offset; | |
|       $response['seconds'] = $timezone->seconds; | |
|       $response['localtime'] = $timezone->localtime; | |
|     } | |
| 
 | |
|     json_response($app, $response); | |
|   } else { | |
|     json_response($app, [ | |
|       'error' => 'invalid_request', | |
|       'error_description' => 'Request was missing parameters' | |
|     ], 400); | |
|   } | |
| });
 |