40 lines
683 B
Ruby
40 lines
683 B
Ruby
class UserGeometry
|
|
alias :read_attribute_for_serialization :send
|
|
|
|
def initialize(json_latlngs)
|
|
@json_latlngs = json_latlngs
|
|
end
|
|
|
|
def value
|
|
to_geo_json(@json_latlngs)
|
|
end
|
|
|
|
def type_de_champ
|
|
{
|
|
id: -1,
|
|
libelle: 'user_geometry',
|
|
type_champ: 'user_geometry',
|
|
order_place: -1,
|
|
descripton: ''
|
|
}
|
|
end
|
|
|
|
private
|
|
|
|
def to_geo_json(json_latlngs)
|
|
json = JSON.parse(json_latlngs)
|
|
|
|
coordinates = json.map do |lat_longs|
|
|
outbounds = lat_longs.map do |lat_long|
|
|
[lat_long['lng'], lat_long['lat']]
|
|
end
|
|
|
|
[outbounds]
|
|
end
|
|
|
|
{
|
|
type: 'MultiPolygon',
|
|
coordinates: coordinates
|
|
}
|
|
end
|
|
end
|