Як перетворити 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
Відповіді:
1 для відповіді № 1Вам не потрібно кодувати JSON. Ви можете передати Geo.Point як аргумент функції. Я б зробив щось на кшталт:
def to_lat_lng(%Geo.Point{coordinates: {lat, long}}) do
%{latitude: lat, longitude: long}
end
Зверніть увагу, що це не метод примірника. Це просто функція. деякі інші термінологічні речі, які ви повинні знати, як це може допомогти вам в документації: В еліксирі у нас є список, а не масив. Ми також використовуємо карту чи дакт http://elixir-lang.org/getting-started/maps-and-dicts.html