diff --git a/compass/app/Http/Controllers/Api.php b/compass/app/Http/Controllers/Api.php index b763e0b..ca06ea1 100644 --- a/compass/app/Http/Controllers/Api.php +++ b/compass/app/Http/Controllers/Api.php @@ -69,13 +69,18 @@ class Api extends BaseController $events[] = $rec; } else { #$record->date->format('U.u'); - $locations[] = $record->data; - $props = $record->data->properties; - $date = $record->date; - $date->setTimeZone(new DateTimeZone($tz)); - $props->timestamp = $date->format('c'); - $props->unixtime = (int)$date->format('U'); - $properties[] = $props; + // Ignore super inaccurate locations + if(!property_exists($record->data->properties, 'horizontal_accuracy') + || $record->data->properties->horizontal_accuracy <= 5000) { + + $locations[] = $record->data; + $props = $record->data->properties; + $date = $record->date; + $date->setTimeZone(new DateTimeZone($tz)); + $props->timestamp = $date->format('c'); + $props->unixtime = (int)$date->format('U'); + $properties[] = $props; + } } } diff --git a/compass/app/Jobs/TripComplete.php b/compass/app/Jobs/TripComplete.php index f2a9d99..8920e01 100644 --- a/compass/app/Jobs/TripComplete.php +++ b/compass/app/Jobs/TripComplete.php @@ -46,11 +46,14 @@ class TripComplete extends Job implements SelfHandling, ShouldQueue foreach($results as $id=>$record) { // Don't include app action tracking data if(!property_exists($record->data->properties, 'action')) { - $record->data->properties = array_filter((array)$record->data->properties, function($k){ - // Remove some of the app-specific tracking keys from each record - return !in_array($k, ['locations_in_payload','desired_accuracy','significant_change','pauses','deferred']); - }, ARRAY_FILTER_USE_KEY); - $features[] = $record->data; + // Ignore locations with accuracy worse than 5000m + if(property_exists($record->data->properties, 'horizontal_accuracy') && $record->data->properties->horizontal_accuracy <= 5000) { + $record->data->properties = array_filter((array)$record->data->properties, function($k){ + // Remove some of the app-specific tracking keys from each record + return !in_array($k, ['locations_in_payload','desired_accuracy','significant_change','pauses','deferred']); + }, ARRAY_FILTER_USE_KEY); + $features[] = $record->data; + } } }