georange 1.0.0 copy "georange: ^1.0.0" to clipboard
georange: ^1.0.0 copied to clipboard

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 data [...]

georange #

Dart License: MIT Pub Version

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

Buy Me A Coffee

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 #

  1. 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
  1. 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
33
likes
140
points
196
downloads

Publisher

unverified uploader

Weekly Downloads

2024.09.21 - 2025.04.05

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).

Repository (GitHub)

Documentation

API reference

License

MIT (license)

More

Packages that depend on georange