OpenLayers OpenLayers

Changeset 6264

Show
Ignore:
Timestamp:
02/13/08 21:40:29 (1 year ago)
Author:
achipa
Message:

interpolatePoints functionality (WiP)
permanentHighlight functionality
Layer.js minor bugfixes

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • sandbox/achipa/openlayers/examples/timed-point-track-markers.html

    r6180 r6264  
    5959        function setTime() { 
    6060            var targetdate = OpenLayers.DateTime.fromRFC3339(OpenLayers.Util.getElement('date').value); 
     61            lineLayer.permanentHighlight = OpenLayers.Util.getElement('phighlight').checked; 
     62            lineLayer.interpolatePoints = OpenLayers.Util.getElement('ipoints').checked; 
    6163            lineLayer.setDateTime(targetdate); 
    6264        } 
     
    6971   Load GeoRSS URL: <input type="text" id="url" size="50" /><input type="submit" onclick="addUrl(); return false;" value="Load Feed" onsubmit="addUrl(); return false;" /> 
    7072    </form> <form onsubmit="return false;"> 
     73    <input type="checkbox" id="phighlight"> permanentHighlight <BR> 
     74    <input type="checkbox" id="ipoints"> interpolatePoints <BR> 
    7175    Selected time: <input type="text" id="date" value="1995-12-12T09:20:00Z" > <input type="submit" onSubmit="setTime(); return false;" onClick="setTime(); return false;"> 
    7276    </form> 
  • sandbox/achipa/openlayers/lib/OpenLayers/Layer.js

    r6180 r6264  
    10891089        return null; 
    10901090 
    1091         return this.datetimeIntervals[datetimeIntervals.length -1].to; 
     1091        return this.datetimeIntervals[this.datetimeIntervals.length -1].to; 
    10921092    }, 
    10931093 
  • sandbox/achipa/openlayers/lib/OpenLayers/Layer/TimedPointTrack.js

    r6180 r6264  
    4545    permanentHighlight: false, 
    4646     
     47    /** 
     48     * APIProperty: 
     49     * defaultStyle - {OpenLayers.Style} optional. The style for the higlight, by 
     50     *             default this is  
     51     * 
     52     *           fillColor: "#223322", 
     53     *           fillOpacity: 0.5, 
     54     *           strokeColor: "#999999", 
     55     *           strokeOpacity: 1, 
     56     *           strokeWidth: 1, 
     57     *           strokeLinecap: "round", 
     58     *           pointRadius: 6, 
     59     *           pointStyle: "dot" 
     60     */ 
     61    defaultStyle: { 
     62                fillColor: "#223322", 
     63                fillOpacity: 0.5, 
     64                strokeColor: "#999999", 
     65                strokeOpacity: 1, 
     66                strokeWidth: 1, 
     67                strokeLinecap: "round", 
     68                pointRadius: 6, 
     69                pointStyle: "dot" 
     70            }, 
    4771    /** 
    4872     * Constructor: OpenLayers.TimedPointTrack 
     
    5983            new OpenLayers.Geometry.Point(0,0), 
    6084            {}, 
    61             new OpenLayers.Style({ 
    62                 fillColor: "#223322", 
    63                 fillOpacity: 0.5, 
    64                 strokeColor: "#999999", 
    65                 strokeOpacity: 1, 
    66                 strokeWidth: 1, 
    67                 strokeLinecap: "round", 
    68                 pointRadius: 6, 
    69                 pointStyle: "dot" 
    70             }) 
     85            new OpenLayers.Style(this.defaultStyle) 
    7186        ); 
    7287        this.events.register("datetimechanged", this, this.updateHighlight); 
    7388    }, 
    7489 
     90    /** 
     91     * APIMethod: updateHighlight 
     92     * Updates highlight location according to the layers' current time, 
     93     * usually called usually from function registered with the "datetimechanged"  
     94     * event of the layer 
     95     * 
     96     */ 
     97 
    7598    updateHighlight: function(){ 
    7699        this.renderer.eraseFeatures([this.highlight]); 
     100        if (!this.permanentHighlight && (this.getStartDateTime() > this.currentDateTime.to || this.getStopDateTime() < this.currentDateTime.from)) 
     101            return; 
     102        
    77103        var closestpoint; 
    78104        var closesttime = 0; 
     105        var closestfeature = 0; 
    79106        for (var i=0; i < this.features.length; i++){ 
    80107            var atime = 0; 
     
    85112                closesttime = atime; 
    86113                closestpoint = this.features[i].geometry.components[0]; 
    87             } 
    88         } 
     114                closestfeature = i; 
     115            } 
     116        } 
     117 
     118        var closestgeom = this.features[closestfeature].geometry; 
     119        if (this.interpolatePoints && closestgeom.components && closestgeom.components.length) { 
     120            closestpoint = new OpenLayers.Geometry.Point(0,0); 
     121            for (var i=0; i < closestgeom.components.length; i++) 
     122                 closestpoint.move(closestgeom.components[i].x, closestgeom.components[i].y); 
     123             
     124            closestpoint.x /= closestgeom.components.length; 
     125            closestpoint.y /= closestgeom.components.length; 
     126 
     127        } 
     128 
    89129        this.highlight.geometry = closestpoint.clone(); 
    90130        this.drawFeature(this.highlight); 
     
    102142     */ 
    103143    updateDateTimeInterval: function() { 
    104         var begin = Date(2038,0,0); 
    105         var end = Date(1970,0,0); 
     144        var begin = Date.UTC(2038,0,0); 
     145        var end = Date.UTC(1970,0,0); 
    106146        for(var i = 0; i < this.features.length; i++) { 
    107147            if (this.features[i].attributes["pubdate"]) { 
     
    113153            } 
    114154        } 
    115         this.datetimeIntervals = new Array(new OpenLayers.DateTime(begin, end))
     155        this.datetimeIntervals = [new OpenLayers.DateTime(begin, end)]
    116156    }, 
    117157