Method: NoBrainer::Geo::Point#initialize

Defined in:
lib/no_brainer/geo/point.rb

#initialize(*args) ⇒ Point

Returns a new instance of Point.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/no_brainer/geo/point.rb', line 6

def initialize(*args)
  if args.size == 2
    longitude, latitude = args
  elsif args.size == 1 && args.first.is_a?(self.class)
    longitude, latitude = args.first.longitude, args.first.latitude
  elsif args.size == 1 && args.first.is_a?(Hash)
    opt = args.first.symbolize_keys
    longitude, latitude = opt[:longitude] || opt[:long], opt[:latitude] || opt[:lat]
  else
    raise NoBrainer::Error::InvalidType
  end

  longitude = Float.nobrainer_cast_user_to_model(longitude)
  latitude  = Float.nobrainer_cast_user_to_model(latitude)

  raise NoBrainer::Error::InvalidType unless (-180..180).include?(longitude)
  raise NoBrainer::Error::InvalidType unless (-90..90).include?(latitude)

  self.longitude = longitude
  self.latitude = latitude
end