如何在Geo.Point
之后转换%Geo.Point{coordinates: {49.44, 17.87}, srid: nil}
坐标属性包含Geo.JSON.encode
:%{"coordinates" => [49.44, 17.87], "type" => "Point"}
以下公式:
%{latitude: latitude, longitude: longitude}
这是我目前的方法,如何一步完成?
%{"coordinates" => [latitude,longitude] } = Geo.JSON.encode(place.coordinates)
coordinates = %{latitude: latitude, longitude: longitude}
如何将它放在实例方法中,以便在调用后返回新公式,例如place.to_lat_lng
?
defmodule MyApp.Place do
use MyApp.Web, :model
schema "place" do
field :coordinates, Geo.Point
timestamps
end
def to_lat_lng do
#...format coordinates
end
end
答案 0 :(得分:1)
您不需要JSON编码。您可以将Geo.Point作为参数传递给函数。我会做类似的事情:
def to_lat_lng(%Geo.Point{coordinates: {lat, long}}) do
%{latitude: lat, longitude: long}
end
请注意,这不是实例方法。它只是一个功能。你应该知道的其他一些术语,因为它可以帮助你提供文档:在elixir中我们有一个列表,而不是一个数组。我们还使用地图或字典http://elixir-lang.org/getting-started/maps-and-dicts.html