Skip to content

Instantly share code, notes, and snippets.

@abbadon1334
Created May 10, 2019 10:51
Show Gist options
  • Save abbadon1334/d1222515dcb5c4c600fab1b2acce11ce to your computer and use it in GitHub Desktop.
Save abbadon1334/d1222515dcb5c4c600fab1b2acce11ce to your computer and use it in GitHub Desktop.
Given a MaxRadiusInKm, filter the reference of a model and get All records in the request radius by longitude and latitude.
$radiusMaxInKm = (int) $filterRequest['km'][0] ?? $filterRequest['km'] ?? 0;
$IDCitta = (int) $value;
$mCitta = new Citta($this->app->db);
$mCitta->tryLoad($IDCitta);
$earthRadiusKilometers = 6378.140;
$latitude = $mCitta->get('Latitude');
$longitude = $mCitta->get('Longitude');
$refFieldLatitude = $modelGridCandidati->refLink('domicilio_citta')->action('field',['Latitude']);
$refFieldLongitude = $modelGridCandidati->refLink('domicilio_citta')->action('field',['Longitude']);
$modelGridCandidati->addCondition(
new Expression(
'
[earthradius]
*
acos(
cos(
radians(
[rqst_latitude]
)
)
*
cos(
radians(
[ref_latitude]
)
)
*
cos(
radians(
[ref_longitude]
)
- radians(
[rqst_longitude]
)
)
+
sin(
radians(
[rqst_latitude]
)
)
*
sin(
radians(
[ref_latitude]
)
)
)',[
'earthradius' => $earthRadiusKilometers,
'rqst_latitude' => $latitude,
'rqst_longitude' => $longitude,
'ref_latitude' => $refFieldLatitude,
'ref_longitude'=> $refFieldLongitude
]),'<=',$radiusMaxInKm);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment