26 lines
643 B
Dart
26 lines
643 B
Dart
import 'dart:math';
|
|
|
|
/// Calculate distance between two coordinates in km
|
|
double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
|
|
const double earthRadius = 6371; // km
|
|
final dLat = _degreesToRadians(lat2 - lat1);
|
|
final dLon = _degreesToRadians(lon2 - lon1);
|
|
|
|
final a = sin(dLat / 2) * sin(dLat / 2) +
|
|
cos(_degreesToRadians(lat1)) *
|
|
cos(_degreesToRadians(lat2)) *
|
|
sin(dLon / 2) *
|
|
sin(dLon / 2);
|
|
|
|
final c = 2 * atan2(sqrt(a), sqrt(1 - a));
|
|
final distance = earthRadius * c;
|
|
|
|
return distance;
|
|
}
|
|
|
|
double _degreesToRadians(double degrees) {
|
|
return degrees * pi / 180;
|
|
}
|
|
|
|
|