georange

Creator: coderz1093

Last updated:

Add to Cart

Description:

georange

georange #

Georange is a package that helps with encoding geohashes, decoding geohashes,calculating distance between 2 points and generating latitudinal and longitudinal ranges as geohashes to help with the querying of databases (Tested on Firestore Only).
Heavily influenced by GeoFlutterFire

Getting Started #
You should ensure that you add Georange as a dependency in your flutter project.
dependencies:
georange: <latest-version>
copied to clipboard
You should then run flutter packages get
Example #
There is a detailed example project in the example folder.
Initialize #
Import georange to your dart file and initialize
import 'package:georange/georange.dart';
GeoRange georange = GeoRange();
copied to clipboard
Encode LatLng #
This method encodes the latitude and longitude
var encoded = georange.encode(-1.2862368,36.8195783);
print(encoded);
copied to clipboard
prints kzf0tvg5n
Decode Geohash #
Decode a [geohash] into a pair of latitude and longitude.
Point decoded = georange.decode("kzf0tvg5n");
print(decoded);
copied to clipboard
prints
-1.2862372398376465
36.819584369659424
Generate Range #
Range range = georange.geohashRange(-1.2921, 36.8219, distance: 10);
print(range.lower);
print(range.upper);
copied to clipboard
prints
kzf05k6hh
kzf30mptu
Calculate Distance between 2 Points #
Point point1 = Point(latitude: -4.0435, longitude: 39.6682); //Mombasa
Point point2 = Point(latitude: -1.2921, longitude: 36.8219); // Nairobi

var distance = georange.distance(point1, point2);
print(distance);
copied to clipboard
prints
439.716 Distance in Kilometres
Usage with Firestore #

Add a document to firestore with a geohash field or a different name

final FirebaseFirestore _db;
...
String myhash = georange.encode(-1.2862368,36.8195783);
await _db.collection("locations").add({
"geohash":myhash,
})
...
copied to clipboard

Query Firestore (Runs like a normal firestore query)

final FirebaseFirestore _db;

GeoRange georange = GeoRange();

Range range = georange.geohashRange(currentLocation.latitude, currentLocation.longitude, distance:10);

QuerySnapshot snapshot = await _db
.collection("locations")
.where("geohash", isGreaterThanOrEqualTo: range.lower)
.where("geohash", isLessThanOrEqualTo: range.upper)
.limit(10)
.get();

copied to clipboard

License

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

Customer Reviews

There are no reviews.