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.



505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
# File 'lib/kamelopard/classes.rb', line 505

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.



502
503
504
# File 'lib/kamelopard/classes.rb', line 502

def altitudeMode
  @altitudeMode
end

#classNameObject (readonly)

Returns the value of attribute className.



503
504
505
# File 'lib/kamelopard/classes.rb', line 503

def className
  @className
end

#headingObject

Returns the value of attribute heading.



502
503
504
# File 'lib/kamelopard/classes.rb', line 502

def heading
  @heading
end

#pointObject

Returns the value of attribute point.



503
504
505
# File 'lib/kamelopard/classes.rb', line 503

def point
  @point
end

#rangeObject

Returns the value of attribute range.



502
503
504
# File 'lib/kamelopard/classes.rb', line 502

def range
  @range
end

#rollObject

Returns the value of attribute roll.



502
503
504
# File 'lib/kamelopard/classes.rb', line 502

def roll
  @roll
end

#tiltObject

Returns the value of attribute tilt.



502
503
504
# File 'lib/kamelopard/classes.rb', line 502

def tilt
  @tilt
end

#timespanObject

Returns the value of attribute timespan.



502
503
504
# File 'lib/kamelopard/classes.rb', line 502

def timespan
  @timespan
end

#timestampObject

Returns the value of attribute timestamp.



502
503
504
# File 'lib/kamelopard/classes.rb', line 502

def timestamp
  @timestamp
end

#viewerOptionsObject

Returns the value of attribute viewerOptions.



502
503
504
# File 'lib/kamelopard/classes.rb', line 502

def viewerOptions
  @viewerOptions
end

Instance Method Details

#[](a) ⇒ Object



606
607
608
# File 'lib/kamelopard/classes.rb', line 606

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

#[]=(a, b) ⇒ Object



610
611
612
613
614
615
616
617
618
# File 'lib/kamelopard/classes.rb', line 610

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



542
543
544
# File 'lib/kamelopard/classes.rb', line 542

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

#altitude=(a) ⇒ Object



562
563
564
565
566
567
568
# File 'lib/kamelopard/classes.rb', line 562

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

#latitudeObject



538
539
540
# File 'lib/kamelopard/classes.rb', line 538

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

#latitude=(a) ⇒ Object



554
555
556
557
558
559
560
# File 'lib/kamelopard/classes.rb', line 554

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

#longitudeObject



534
535
536
# File 'lib/kamelopard/classes.rb', line 534

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

#longitude=(a) ⇒ Object



546
547
548
549
550
551
552
# File 'lib/kamelopard/classes.rb', line 546

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

#to_kml(elem = nil) ⇒ Object



570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
# File 'lib/kamelopard/classes.rb', line 570

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



602
603
604
# File 'lib/kamelopard/classes.rb', line 602

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