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?

Constructor Details

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

Returns a new instance of AbstractView.



474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
# File 'lib/kamelopard/classes.rb', line 474

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.



471
472
473
# File 'lib/kamelopard/classes.rb', line 471

def altitudeMode
  @altitudeMode
end

#classNameObject (readonly)

Returns the value of attribute className.



472
473
474
# File 'lib/kamelopard/classes.rb', line 472

def className
  @className
end

#headingObject

Returns the value of attribute heading.



471
472
473
# File 'lib/kamelopard/classes.rb', line 471

def heading
  @heading
end

#pointObject

Returns the value of attribute point.



472
473
474
# File 'lib/kamelopard/classes.rb', line 472

def point
  @point
end

#rangeObject

Returns the value of attribute range.



471
472
473
# File 'lib/kamelopard/classes.rb', line 471

def range
  @range
end

#rollObject

Returns the value of attribute roll.



471
472
473
# File 'lib/kamelopard/classes.rb', line 471

def roll
  @roll
end

#tiltObject

Returns the value of attribute tilt.



471
472
473
# File 'lib/kamelopard/classes.rb', line 471

def tilt
  @tilt
end

#timespanObject

Returns the value of attribute timespan.



471
472
473
# File 'lib/kamelopard/classes.rb', line 471

def timespan
  @timespan
end

#timestampObject

Returns the value of attribute timestamp.



471
472
473
# File 'lib/kamelopard/classes.rb', line 471

def timestamp
  @timestamp
end

#viewerOptionsObject

Returns the value of attribute viewerOptions.



471
472
473
# File 'lib/kamelopard/classes.rb', line 471

def viewerOptions
  @viewerOptions
end

Instance Method Details

#[](a) ⇒ Object



571
572
573
# File 'lib/kamelopard/classes.rb', line 571

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

#[]=(a, b) ⇒ Object



575
576
577
578
579
580
581
582
583
# File 'lib/kamelopard/classes.rb', line 575

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



511
512
513
# File 'lib/kamelopard/classes.rb', line 511

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

#altitude=(a) ⇒ Object



531
532
533
534
535
536
537
# File 'lib/kamelopard/classes.rb', line 531

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

#latitudeObject



507
508
509
# File 'lib/kamelopard/classes.rb', line 507

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

#latitude=(a) ⇒ Object



523
524
525
526
527
528
529
# File 'lib/kamelopard/classes.rb', line 523

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

#longitudeObject



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

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

#longitude=(a) ⇒ Object



515
516
517
518
519
520
521
# File 'lib/kamelopard/classes.rb', line 515

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

#to_kml(elem = nil) ⇒ Object



539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
# File 'lib/kamelopard/classes.rb', line 539

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