(require '[wagoe.geo.shell.service :as geo])
;; Geocode an address
(geo/geocode! service {:address "Prinsengracht 263, Amsterdam"})
;=> {:lat 52.3747 :lng 4.8844 :formatted-address "Prinsengracht 263, Amsterdam" :provider :openstreetmap :cached? false}
;; Postcode + house number (PDOK)
(geo/geocode! service {:postcode "1012 JS" :house-number 1 :house-number-addition "A"})
;=> {:street "Dam" :house-number "1" :house-number-addition "A" :city "Amsterdam" :lat ... :lng ...}
;; Only the named providers, for this call; cached separately
(geo/geocode! service {:postcode "1012 JS" :house-number 1} {:only #{:pdok}})
;; The same through the component's port, without requiring the shell namespace
(require '[wagoe.geo.ports :as geo-ports])
(geo-ports/lookup service {:postcode "1012 JS" :house-number 1} {:only #{:pdok}})
;; Reverse geocode
(geo/reverse-geocode! service {:lat 52.3747 :lng 4.8844})
;=> {:formatted-address "Prinsengracht 263, 1016 GV Amsterdam"}
;; Haversine distance (pure, no HTTP)
(geo/distance {:lat 52.3747 :lng 4.8844} {:lat 52.3702 :lng 4.8952})
;=> 0.84 ; kilometres