Calculate the greatcircle distance between two points (having Latitude,Longitude) on the surface of Earth You can get the distance using the Spherical law of cosines, Haversine formula or Vincenty`s formula
The greatcircle distance is the shortest distance between two points on the surface of a sphere
A diagram illustrating greatcircle distance (drawn in red) between two points on a sphere, P and Q. Two antipodal points, u and v, are also depicted.
By CheCheDaWaff (Own work) [CC BYSA 4.0 (https://creativecommons.org/licenses/bysa/4.0)], via Wikimedia Commons
Included in this library:
Disclaimer
: The earth is not quite a sphere. This means that errors(0.3%,0.5% errors) from assuming spherical geometry might be considerable depending on the points; so: don't trust your life on this value
Usage example:
final lat1 = 41.139129;
final lon1 = 1.402244;
final lat2 = 41.139074;
final lon2 = 1.402315;
var gcd = new GreatCircleDistance.fromDegrees(latitude1: lat1, longitude1: lon1, latitude2: lat2, longitude2: lon2);
print('Distance from location 1 to 2 using the Haversine formula is: ${gcd.haversineDistance()}');
print('Distance from location 1 to 2 using the Spherical Law of Cosines is: ${gcd.sphericalLawOfCosinesDistance()}');
print('Distance from location 1 to 2 using the Vicenty`s formula is: ${gcd.vincentyDistance()}');
Check Wikipedia for detailed description on Greatcircle distance
Added coordinates validation. A coordinate is considered invalid if it meets at least one of the following criteria:
see Decimal degrees
Remove upper bound Dart SDK constraint
thanks to @bramvbilsen for pointing it out and for the PR
example/great_circle_distance_example.dart
import 'package:great_circle_distance/great_circle_distance.dart';
main() {
final lat1 = 41.139129;
final lon1 = 1.402244;
final lat2 = 41.139074;
final lon2 = 1.402315;
var gcd = new GreatCircleDistance.fromDegrees(
latitude1: lat1, longitude1: lon1, latitude2: lat2, longitude2: lon2);
print(
'Distance from location 1 to 2 using the Haversine formula is: ${gcd.haversineDistance()}');
print('Distance from location 1 to 2 using the Spherical Law of Cosines is: ${gcd
.sphericalLawOfCosinesDistance()}');
print(
'Distance from location 1 to 2 using the Vicenty`s formula is: ${gcd.vincentyDistance()}');
}
Add this to your package's pubspec.yaml file:
dependencies:
great_circle_distance: ^1.0.1
You can install packages from the command line:
with pub:
$ pub get
with Flutter:
$ flutter pub get
Alternatively, your editor might support pub get
or flutter pub get
.
Check the docs for your editor to learn more.
Now in your Dart code, you can use:
import 'package:great_circle_distance/great_circle_distance.dart';
Popularity:
Describes how popular the package is relative to other packages.
[more]

80

Health:
Code health derived from static analysis.
[more]

55

Maintenance:
Reflects how tidy and uptodate the package is.
[more]

55

Overall:
Weighted score of the above.
[more]

68

We analyzed this package on Jul 22, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
Detected platforms: Flutter, web, other
No platform restriction found in primary library
package:great_circle_distance/great_circle_distance.dart
.
Fix lib/src/great_circle_distance_base.dart
. (26.12 points)
Analysis of lib/src/great_circle_distance_base.dart
failed with 1 error, 3 hints:
line 61 col 68: Undefined name 'PI'.
line 1 col 8: Unused import: 'dart:math'.
line 90 col 13: DO use curly braces for all flow control structures.
line 94 col 13: DO use curly braces for all flow control structures.
Fix lib/src/formula/spherical_lawofcosines.dart
. (25 points)
Analysis of lib/src/formula/spherical_lawofcosines.dart
failed with 1 error:
line 10 col 49: Undefined name 'PI'.
Format lib/great_circle_distance.dart
.
Run dartfmt
to format lib/great_circle_distance.dart
.
Format lib/src/formula/harvesine.dart
.
Run dartfmt
to format lib/src/formula/harvesine.dart
.
Format lib/src/formula/vincenty.dart
.
Run dartfmt
to format lib/src/formula/vincenty.dart
.
Package is getting outdated. (44.66 points)
The package was last published 75 weeks ago.
Package  Constraint  Resolved  Available 

Direct dependencies  
Dart SDK  >=1.20.1 <3.0.0  
Dev dependencies  
test  ^0.12.0 