module Data.Geospatial.Geometry.GeoPoint (
GeoPoint(..)
, unGeoPoint
) where
import Data.Geospatial.BasicTypes
import Data.Geospatial.Geometry.Aeson
import Control.Lens ( makeLenses )
import Control.Monad ( mzero )
import Data.Aeson ( FromJSON(..), ToJSON(..), Value(..), Object )
newtype GeoPoint = GeoPoint { _unGeoPoint :: GeoPositionWithoutCRS } deriving (Show, Eq)
makeLenses ''GeoPoint
instance ToJSON GeoPoint where
toJSON = makeGeometryGeoAeson "Point" . _unGeoPoint
instance FromJSON GeoPoint where
parseJSON (Object o) = readGeometryGeoAeson "Point" GeoPoint o
parseJSON _ = mzero