Proximity Hash generates a set of geohashes that cover a circular area, given the center coordinates and the radius. Geohash is a public domain geocode system which encodes a geographic location into a short string of letters and digits and is used as unique identifies and to represent point data in databases.
For example the point
25.6953° S, 54.4367° W
will covert to
6g3mc626
.
Proximity hash also comes with a geohash library forked from dart_geohash since it was not being actively maintained.
import 'package:proximity_hash/geohash.dart';
To get this plugin, add proximity_hash
as a dependency in your pubspec.yaml file. For example:
dependencies:
proximity_hash: ^1.1.0
To get all the geohashes within a radius of 5000
meters from the point 25.6953° S, 54.4367° W
with precision 3
simply import the library and call createGeohashes()
. The precision dictates how long and how many geohashes are returned. For
example a precision of 3 returns geohahses of length 3.
import 'package:proximity_hash/proximity_hash.dart';
List<String> proximityGeohashes = createGeohashes(48.864716, 2.349014, 5000, 3);
// proximityGeohashes == ["u0d","u09"]
Benchmark of createGeohashes
for different precisions with radius 1000
. Performance can become limiting starting at precision 9. Note that a larger radius will also decrease performance.
Precicion | Time |
---|---|
1 | .0068 sec |
2 | .0068 sec |
3 | .0070 sec |
4 | .0070 sec |
5 | .0070 sec |
6 | .0079 sec |
7 | .0232 sec |
8 | .1664 sec |
9 | 4.996 sec |
10 | 153.5 sec |
Please file any issues, bugs or feature requests as an issue on our GitHub page.
If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug or adding a cool new feature) submit a pull request.
Based on proximityhash