geo_sort

Last updated:

0 purchases

geo_sort Image
geo_sort Images
Add to Cart

Description:

geo sort

Geosort #
Geosort is a Dart package for sorting a list of geographic
locations based on their distance from a reference location.
It provides functions for calculating the distance between two
geographic coordinates using the inverse haversine formula, as
well as for sorting a list of locations by distance.
Geosort is useful for applications that require the computation
and sorting of geographic locations, such as mapping,
geolocation, and points of interest management.
Installation #
This package is intended to support development of Dart projects. In
general, put it under
dependencies,
in your pubspec.yaml:
dependencies:
geo_sort: ^0.1.0
copied to clipboard
You can install packages from the command line:
pub get
copied to clipboard
Usage #
First, you need to create a class that implements the HasLocation
interface, like this:
class TestLocation implements HasLocation {
final int id;
final String city;
@override
final double latitude;
@override
final double longitude;

TestLocation({
required this.id,
required this.city,
required this.latitude,
required this.longitude,
});

}
copied to clipboard
Then, create a list of TestLocation objects:
final List<TestLocation> locations = [
TestLocation(id: 1, city: 'Rome', latitude: 41.9028, longitude: 12.4964),
TestLocation(id: 2, city: 'Milan', latitude: 45.4642, longitude: 9.1900),
TestLocation(id: 3, city: 'Naples', latitude: 40.8518, longitude: 14.2681),
];
copied to clipboard
Now, you can use the GeoSort class to sort the list of locations by
distance from a reference location. Here's how:
final sortedLocations = GeoSort.sortByLatLong(
items: locations,
latitude: 41.9028,
longitude: 12.4964,
ascending: false,
);
copied to clipboard
This will sort the locations list by distance from the coordinates (41.9028, 12.4964) in descending order.
Explanation of Parameters #
items: The list of locations to be sorted.
latitude and longitude: The coordinates of the reference location.
ascending: Indicates whether to sort the items in ascending order (default) or descending order.
maxDistance: Defines the maximum distance (in kilometers) within which items
will be included in the sorted list.
maxElements: Specifies the maximum number of elements to include in the sorted list.
These parameters provide additional control over the selection and sorting of
items in the list based on user preferences or specific application requirements.
Full Code #
import 'package:geo_sort/src/extensions/extensions.dart';
import 'package:geo_sort/src/utils/utils.dart';

class TestLocation implements HasLocation {
final int id;
final String city;
@override
final double latitude;
@override
final double longitude;

TestLocation({
required this.id,
required this.city,
required this.latitude,
required this.longitude,
});
}

void main() {
// Create a list of TestLocation instances
final List<TestLocation> locations = [
TestLocation(id: 1, city: 'Rome', latitude: 41.9028, longitude: 12.4964),
TestLocation(id: 2, city: 'Milan', latitude: 45.4642, longitude: 9.1900),
TestLocation(id: 3, city: 'Naples', latitude: 40.8518, longitude: 14.2681),
];

// Reference coordinates
final double referenceLat = 41.9028;
final double referenceLong = 12.4964;

// Sort the list by distance
final sortedLocations = GeoSort.sortByLatLong<TestLocation>(
items: locations,
latitude: referenceLat,
longitude: referenceLong,
ascending: false,
);

// Print sorted list
print('Sorted Locations:');
sortedLocations.forEach((location) {
print('${location.city}: ${location.latitude}, ${location.longitude}');
});
}
copied to clipboard
Contributing #
Contributions to Geosort are welcome! Please feel free to
submit issues for any bugs or feature requests, and pull requests are encouraged.
License #
GeoSort is available under the MIT license. See the LICENSE
file for more info.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.