Class: Kamelopard::AbstractView

Inherits:
Object
  • Object
show all
Defined in:
lib/kamelopard/classes.rb

Overview

Abstract class corresponding to KML’s AbstractView object

Direct Known Subclasses

Camera, LookAt

Instance Attribute Summary collapse

Attributes inherited from Object

#comment, #kml_id, #master_only

Instance Method Summary collapse

Methods inherited from Object

#_alternate_to_kml, #change, #master_only?, parse

Constructor Details

#initialize(className, point, options = {}) ⇒ AbstractView

Returns a new instance of AbstractView.



579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
# File 'lib/kamelopard/classes.rb', line 579

def initialize(className, point, options = {})
    raise "className argument must not be nil" if className.nil?

    @heading = 0
    @tilt = 0
    @roll = nil
    @range = nil
    @altitudeMode = :clampToGround
    @viewerOptions = {}

    super options

    @className = className
    self.point= point unless point.nil?
end

Instance Attribute Details

#altitudeModeObject

Returns the value of attribute altitudeMode.



575
576
577
# File 'lib/kamelopard/classes.rb', line 575

def altitudeMode
  @altitudeMode
end

#classNameObject (readonly)

Returns the value of attribute className.



577
578
579
# File 'lib/kamelopard/classes.rb', line 577

def className
  @className
end

#headingObject

Returns the value of attribute heading.



575
576
577
# File 'lib/kamelopard/classes.rb', line 575

def heading
  @heading
end

#pointObject

Returns the value of attribute point.



577
578
579
# File 'lib/kamelopard/classes.rb', line 577

def point
  @point
end

#rangeObject

Returns the value of attribute range.



575
576
577
# File 'lib/kamelopard/classes.rb', line 575

def range
  @range
end

#rollObject

Returns the value of attribute roll.



575
576
577
# File 'lib/kamelopard/classes.rb', line 575

def roll
  @roll
end

#tiltObject

Returns the value of attribute tilt.



575
576
577
# File 'lib/kamelopard/classes.rb', line 575

def tilt
  @tilt
end

#timespanObject

Returns the value of attribute timespan.



575
576
577
# File 'lib/kamelopard/classes.rb', line 575

def timespan
  @timespan
end

#timestampObject

Returns the value of attribute timestamp.



575
576
577
# File 'lib/kamelopard/classes.rb', line 575

def timestamp
  @timestamp
end

#viewerOptionsObject

Returns the value of attribute viewerOptions.



575
576
577
# File 'lib/kamelopard/classes.rb', line 575

def viewerOptions
  @viewerOptions
end

Instance Method Details

#[](a) ⇒ Object



680
681
682
# File 'lib/kamelopard/classes.rb', line 680

def [](a)
    return @viewerOptions[a]
end

#[]=(a, b) ⇒ Object



684
685
686
687
688
689
690
691
692
# File 'lib/kamelopard/classes.rb', line 684

def []=(a, b)
    if not b.kind_of? FalseClass and not b.kind_of? TrueClass then
        raise 'Option value must be boolean'
    end
    if a != :streetview and a != :historicalimagery and a != :sunlight then
        raise 'Option index must be :streetview, :historicalimagery, or :sunlight'
    end
    @viewerOptions[a] = b
end

#altitudeObject



616
617
618
# File 'lib/kamelopard/classes.rb', line 616

def altitude
    @point.nil? ? nil : @point.altitude
end

#altitude=(a) ⇒ Object



636
637
638
639
640
641
642
# File 'lib/kamelopard/classes.rb', line 636

def altitude=(a)
    if @point.nil? then
        @point = Point.new(0, 0, a)
    else
        @point.altitude = a
    end
end

#latitudeObject



612
613
614
# File 'lib/kamelopard/classes.rb', line 612

def latitude
    @point.nil? ? nil : @point.latitude
end

#latitude=(a) ⇒ Object



628
629
630
631
632
633
634
# File 'lib/kamelopard/classes.rb', line 628

def latitude=(a)
    if @point.nil? then
        @point = Point.new(0, a)
    else
        @point.latitude = a
    end
end

#longitudeObject



608
609
610
# File 'lib/kamelopard/classes.rb', line 608

def longitude
    @point.nil? ? nil : @point.longitude
end

#longitude=(a) ⇒ Object



620
621
622
623
624
625
626
# File 'lib/kamelopard/classes.rb', line 620

def longitude=(a)
    if @point.nil? then
        @point = Point.new(a, 0)
    else
        @point.longitude = a
    end
end

#to_kml(elem = nil) ⇒ Object



644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
# File 'lib/kamelopard/classes.rb', line 644

def to_kml(elem = nil)
    t = XML::Node.new @className
    super(t)
    Kamelopard.kml_array(t, [
        [ @point.nil? ? nil : @point.longitude, 'longitude' ],
        [ @point.nil? ? nil : @point.latitude, 'latitude' ],
        [ @point.nil? ? nil : @point.altitude, 'altitude' ],
        [ @heading, 'heading' ],
        [ @tilt, 'tilt' ],
        [ @range, 'range' ],
        [ @roll, 'roll' ]
    ])
    Kamelopard.add_altitudeMode(@altitudeMode, t)
    if @viewerOptions.keys.length > 0 then
        vo = XML::Node.new 'gx:ViewerOptions'
        @viewerOptions.each do |k, v|
            o = XML::Node.new 'gx:option'
            o.attributes['name'] = k.to_s
            o.attributes['enabled'] = v ? 'true' : 'false'
            vo << o
        end
        t << vo
    end
    if not @timestamp.nil? then
        @timestamp.to_kml(t, 'gx')
    elsif not @timespan.nil? then
        @timespan.to_kml(t, 'gx')
    end
    elem << t unless elem.nil?
    t
end

#to_queries_txt(name = '', planet = 'earth') ⇒ Object



676
677
678
# File 'lib/kamelopard/classes.rb', line 676

def to_queries_txt(name = '', planet = 'earth')
    return "#{planet}@#{name}@flytoview=" + self.to_kml.to_s.gsub(/^\s+/, '').gsub("\n", '')
end