Class: Map::KmlEditService
- Inherits:
-
Object
- Object
- Map::KmlEditService
- Defined in:
- lib/map/kml_edit_service.rb
Instance Method Summary collapse
- #add_default_value_to_placemarks(data) ⇒ Object
-
#add_definition_custom_field(name, type) ⇒ Object
add extended data do KML Based on developers.google.com/kml/documentation/extendeddata.
-
#add_point(lat, lon, data = {}) ⇒ Object
Add new point to KML (Placemark).
-
#initialize(raw_kml) ⇒ KmlEditService
constructor
A new instance of KmlEditService.
- #remove_node(name) ⇒ Object
- #to_xml ⇒ Object
Constructor Details
#initialize(raw_kml) ⇒ KmlEditService
Returns a new instance of KmlEditService.
4 5 6 7 |
# File 'lib/map/kml_edit_service.rb', line 4 def initialize(raw_kml) @raw_kml = raw_kml adjust_invalid_kml! end |
Instance Method Details
#add_default_value_to_placemarks(data) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/map/kml_edit_service.rb', line 51 def add_default_value_to_placemarks(data) data.each do |name, value| check_definition!(name) document.css('Placemark').each do |placemark| add_extended_data(name, value, placemark) end end self end |
#add_definition_custom_field(name, type) ⇒ Object
add extended data do KML Based on developers.google.com/kml/documentation/extendeddata
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/map/kml_edit_service.rb', line 11 def add_definition_custom_field(name, type) schema = Nokogiri::XML::Node.new('Schema', nokogiri) schema['name'] = name schema['id'] = "#{name}Id" simple_field = Nokogiri::XML::Node.new('SimpleField', nokogiri) simple_field['type'] = type simple_field['name'] = name schema << simple_field document << schema self end |
#add_point(lat, lon, data = {}) ⇒ Object
Add new point to KML (Placemark)
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/map/kml_edit_service.rb', line 26 def add_point(lat, lon, data = {}) index = document.css('Placemark').length + 1 placemark = Nokogiri::XML::Node.new('Placemark', nokogiri) name = Nokogiri::XML::Node.new('name', nokogiri) name.content = "Point #{index}" # ExtendedData data.each do |key, value| add_extended_data(key, value, placemark) end # Point point = Nokogiri::XML::Node.new('Point', nokogiri) coordinates = Nokogiri::XML::Node.new('coordinates', nokogiri) coordinates.content = "#{lon},#{lat}" point << coordinates placemark << name placemark << point document_or_folder << placemark self end |
#remove_node(name) ⇒ Object
67 68 69 70 71 |
# File 'lib/map/kml_edit_service.rb', line 67 def remove_node(name) document.css(name.to_s).each(&:remove) self end |
#to_xml ⇒ Object
63 64 65 |
# File 'lib/map/kml_edit_service.rb', line 63 def to_xml nokogiri.to_xml end |