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