class RGeo::Kml::MultiGeometryBuilder

Attributes

geo_factory[R]
line_strings[RW]
linear_rings[RW]
parent[R]
points[RW]
polygons[RW]
text[RW]

Public Class Methods

new(geo_factory, parent) click to toggle source
# File lib/rgeo/kml/multi_geometry_builder.rb, line 8
def initialize(geo_factory, parent)
  @geo_factory = geo_factory
  @parent = parent
  @points = []
  @linear_rings = []
  @line_strings = []
  @polygons = []
end

Public Instance Methods

add_line_string(line_string) click to toggle source
# File lib/rgeo/kml/multi_geometry_builder.rb, line 21
def add_line_string(line_string)
  @line_strings << line_string
end
add_linear_ring(linear_ring) click to toggle source
# File lib/rgeo/kml/multi_geometry_builder.rb, line 25
def add_linear_ring(linear_ring)
  @linear_rings << linear_ring
end
add_point(point) click to toggle source
# File lib/rgeo/kml/multi_geometry_builder.rb, line 17
def add_point(point)
  @points << point
end
add_polygon(polygon) click to toggle source
# File lib/rgeo/kml/multi_geometry_builder.rb, line 29
def add_polygon(polygon)
  @polygons << polygon
end
build() click to toggle source
# File lib/rgeo/kml/multi_geometry_builder.rb, line 49
def build
  if multi_geometries?
    @geo_factory.collection(multi_geometries)
  elsif !points.empty?
    return nil unless points.kind_of?(::Array)
    @geo_factory.multi_point(points)
  elsif !line_strings.empty?
    return nil unless line_strings.kind_of?(::Array)
    @geo_factory.multi_line_string(line_strings)
  elsif !linear_rings.empty?
    return nil unless linear_rings.kind_of?(::Array)
    @geo_factory.multi_linear_ring(linear_rings)
  elsif !polygons.empty?
    return nil unless polygons.kind_of?(::Array)
    @geo_factory.multi_polygon(polygons)
  else
    nil
  end
end
multi_geometries() click to toggle source
# File lib/rgeo/kml/multi_geometry_builder.rb, line 33
def multi_geometries
  puts [points, line_strings, linear_rings, polygons].reduce(:+).inspect
  @multi_geometries ||= [points, line_strings, linear_rings, polygons].reduce(:+)
end
multi_geometries?() click to toggle source
# File lib/rgeo/kml/multi_geometry_builder.rb, line 38
def multi_geometries?
  geometries_counter = 0
  
  geometries_counter += 1 if !points.empty?
  geometries_counter += 1 if !line_strings.empty?
  geometries_counter += 1 if !linear_rings.empty?
  geometries_counter += 1 if !polygons.empty?

  geometries_counter >=2 ? true : false 
end