protected bool ShouldUpdateLocation(LocationReading newLocation) { if (isRawTime() && newLocation.timestamp != currentLocation.timestamp) { return(true); } if ((options.maxDistanceFilter > 0) && (LocationReading.HorizontalDistance(rawLocationLast, rawLocationCurrent) > options.maxDistanceFilter)) { return(false); } if ((newLocation.timestamp == currentLocation.timestamp) || (newLocation.timestamp - currentLocation.timestamp < ((long)(options.updateTime * 1000)))) { return(false); } if (LocationReading.HorizontalDistance(newLocation, currentLocation) < options.distanceFilter) { return(false); } if ((newLocation.accuracy > options.accuracyFilter) && (options.accuracyFilter > 0)) { return(false); } return(true); }