Packages
geo
0.16.1
4.1.0
4.0.1
4.0.0
3.6.0
3.5.1
3.5.0
3.4.3
3.4.2
3.4.1
3.4.0
3.3.8
3.3.7
3.3.5
3.3.4
3.3.3
3.3.2
3.3.1
3.3.0
3.2.0
3.1.0
3.0.0
2.1.0
2.0.0
1.5.0
1.4.1
1.4.0
1.3.1
1.3.0
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.18.0
0.17.0
0.16.1
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.2
0.11.1
0.11.0
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.0
0.7.2
0.7.1
0.6.1
0.5.1
Encodes and decodes WKB, WKT, and GeoJSON formats.
Current section
Files
Jump to
Current section
Files
lib/geo/polygon.ex
defmodule Geo.Polygon do
@moduledoc """
Defines the Polygon struct. Implements the Ecto.Type behaviour
"""
@type t :: %Geo.Polygon{ coordinates: [[{number, number}]], srid: integer }
@behaviour Ecto.Type
defstruct coordinates: [], srid: nil
def type, do: :geometry
def blank?(_), do: false
def load(%Geo.Polygon{} = polygon), do: {:ok, polygon}
def load(_), do: :error
def dump(%Geo.Polygon{} = polygon), do: {:ok, polygon}
def dump(_), do: :error
def cast(%Geo.Polygon{} = polygon), do: {:ok, polygon}
def cast(polygon) when is_map(polygon), do: { :ok, Geo.JSON.decode(polygon) }
def cast(polygon) when is_binary(polygon), do: { :ok, Geo.JSON.decode(polygon) }
def cast(_), do: :error
end