github.com/andre/geocoder
master / published May 3, 2018 / repository
Simple Geocoding in Crystal
Geocoder (in Crystal)
Simplest possible geocoder shard for Crystal.
Geocoder options
- Google. Get your API here: https://developers.google.com/maps/documentation/geocoding/get-api-key
- Nominatim (OpenStreamMap). Doesn't need a key, but read usage policy carefully here: https://operations.osmfoundation.org/policies/nominatim/
Installation
Add this to your application's shard.yml:
dependencies:
geocoder:
github: andre/geocoder
Usage
require "geocoder"
g = Geocoder::GoogleGeocoder.new(YOUR_GOOGLE_API_KEY)
res = g.geocode("100 Main st, Denver, CO")
puts res.address
puts res.lat
puts res.lng
Check the success method (returns true | false)
puts res.success
Multiple results are accessed via the all_results method:
res = g.geocode("100 Main st")
all = res.all_results
puts all[0].address
puts all[1].address
Nominatim / OpenStreetmap:
require "geocoder"
g = Geocoder::NominatimGeocoder.new()
res = g.geocode("100 Main st, Denver, CO")
Contributors
- Andre Lewis - creator
API
- Geocoder
Note the usage policy: https://operations.osmfoundation.org/policies/nominatim/ including: * hard max of 1 query per second * don't use it for things like as-you-type lookup * cache your results locally for reuse