geox
This is a little wrapper around the Google geocoding API. It assumes a global fetch
function exists.
npm install --save geoxyarn add geox
Basic usage is exactly what you might expect.
> > geox = default> geoxPromise <pending> > "results":"formatted_address":"200 Kent St, Ottawa, ON K1R, Canada""geometry":"location":"lat":45417127"lng":-757015053
Why?
This library solves two specific problems: Customized results, and dealing with vague results.
Customized results with GraphQL
Google returns a lot of information in their response and most geocoding libraries only return parts of it.
geox
uses the graphql-tag library to filter and modify the response with a GraphQL query.
The default query returns formatted_address
and the lat
and lng
values in the geometry
section of the response. If you want some thing else, just supply your own GraphQL query.
> > geox = default> gql = > geox> "results":"formatted_address":"200 Kent St, Ottawa, ON K1R, Canada""place_id":"ChIJy4vDdFMEzkwRFZjfTeGZZeg"
You can also use GraphQL's alias feature to modify the names of the results.
> geox> "results":"addr":"200 Kent St, Ottawa, ON K1R, Canada""pid":"ChIJy4vDdFMEzkwRFZjfTeGZZeg"
Vague Results
One of the nice things about Google's API is that it will tell you if the result is something vague like "Ottawa" by returning "location_type" : "APPROXIMATE"
in the results. If you only want non-approximate results you can use geocodeExact
.
> geoxPromise <pending> > Error: All results were approximate
ES6 imports
It's not always super obvious how to import things via the new ES6 modules, so here is an example:
//import fetch as a global //or
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Feedback and improvments welcome. There is nothing here that cannot be improved upon.