|                                                         |  | <?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);  }});
 |