30 lines
881 B
Dart
30 lines
881 B
Dart
import 'dart:math';
|
|
import 'package:latlong2/latlong.dart';
|
|
|
|
class DistanceCalculatorHS {
|
|
static const int _radius = 6371; // Radius of the Earth in kilometers
|
|
|
|
static double _degreeToRadian(double degree) {
|
|
return degree * pi / 180;
|
|
}
|
|
|
|
static double calculateDistance(LatLng location1, LatLng location2) {
|
|
double latDistance =
|
|
_degreeToRadian(location2.latitude - location1.latitude);
|
|
double lonDistance =
|
|
_degreeToRadian(location2.longitude - location1.longitude);
|
|
|
|
double a = sin(latDistance / 2) * sin(latDistance / 2) +
|
|
cos(_degreeToRadian(location1.latitude)) *
|
|
cos(_degreeToRadian(location2.latitude)) *
|
|
sin(lonDistance / 2) *
|
|
sin(lonDistance / 2);
|
|
|
|
double c = 2 * atan2(sqrt(a), sqrt(1 - a));
|
|
|
|
double distance = _radius * c * 1000; // Convert to meters
|
|
|
|
return distance;
|
|
}
|
|
}
|