module Data.Geospatial.Geometry.GeoLine (
GeoLine(..)
, unGeoLine
) 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 GeoLine = GeoLine { _unGeoLine :: [GeoPositionWithoutCRS] } deriving (Show, Eq)
makeLenses ''GeoLine
instance ToJSON GeoLine where
toJSON = makeGeometryGeoAeson "Line" . _unGeoLine
instance FromJSON GeoLine where
parseJSON (Object o) = readGeometryGeoAeson "Line" GeoLine o
parseJSON _ = mzero