OpenLayers OpenLayers

Changeset 4819

Show
Ignore:
Timestamp:
10/04/07 14:11:15 (1 year ago)
Author:
crschmidt
Message:

The createCRSObject stuff never really worked. Unfortunately, the tests didn't
catch it because they were all minimal unit tests -- so they never hooked
up features to layers with projections. This fixes the createCRSObject
function, including updated documentation, and includes tests for regression.
(Pullup #1062)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Format/GeoJSON.js

    r4770 r4819  
    448448                        geojson.type = "FeatureCollection"; 
    449449                        if(element.layer && element.layer.projection) { 
    450                             this.createCRSObject(element); 
     450                            geojson.crs = this.createCRSObject(element); 
    451451                        } 
    452452                    } else if(geojson.type != "FeatureCollection") { 
     
    470470            geojson = this.extract.feature.apply(this, [obj]); 
    471471            if(obj.layer && obj.layer.projection) { 
    472                 this.createCRSObject(obj); 
     472                geojson.crs = this.createCRSObject(obj); 
    473473            } 
    474474        } 
     
    480480     * Method: createCRSObject 
    481481     * Create the CRS object for an object. 
     482     * 
     483     * Parameters: 
     484     * object - {<OpenLayers.Feature.Vector>}  
     485     * 
     486     * Returns: 
     487     * {Object} An object which can be assigned to the crs property 
     488     * of a GeoJSON object. 
    482489     */ 
    483490    createCRSObject: function(object) { 
    484491       var proj = object.layer.projection; 
     492       var crs = {} 
    485493       if (proj.match(/epsg:/i)) { 
    486494           var code = parseInt(proj.substring(proj.indexOf(":") + 1)); 
    487495           if (code == 4326) { 
    488                geojson.crs = { 
     496               crs = { 
    489497                   "type": "OGC", 
    490498                   "properties": { 
     
    493501               }; 
    494502           } else {     
    495                geojson.crs = { 
     503               crs = { 
    496504                   "type": "EPSG", 
    497505                   "properties": { 
     
    501509           }     
    502510       } 
     511       return crs; 
    503512    }, 
    504513     
  • trunk/openlayers/tests/Format/test_GeoJSON.html

    r4770 r4819  
    185185    } 
    186186 
     187    function test_Format_GeoJSON_writeWithCRS(t) { 
     188        t.plan(2) 
     189        var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,2)); 
     190        feature.fid = 0; 
     191        var output = '{"type":"Feature","id":0,"properties":{},"geometry":{"type":"Point","coordinates":[1,2]},"crs":{"type":"OGC","properties":{"urn":"urn:ogc:def:crs:OGC:1.3:CRS84"}}}'; 
     192        layer = new OpenLayers.Layer.Vector(); 
     193        layer.projection = "EPSG:4326"; 
     194        feature.layer = layer; 
     195        var parser = new OpenLayers.Format.GeoJSON(); 
     196        test_out = parser.write(feature); 
     197        t.eq(test_out, output, "Output is equal for vector with layer in EPSG:4326 "); 
     198        feature.layer.projection = "EPSG:2805"; 
     199        var output = '{"type":"Feature","id":0,"properties":{},"geometry":{"type":"Point","coordinates":[1,2]},"crs":{"type":"EPSG","properties":{"code":2805}}}'; 
     200        test_out = parser.write(feature); 
     201        t.eq(test_out, output, "Output is equal for vector with point"); 
     202    }     
     203         
    187204    function test_Format_GeoJSON_write(t) { 
    188205        t.plan(10);