diff --git a/src/ol/format/topojsonformat.js b/src/ol/format/topojsonformat.js index 6771dab0aa..931840e6e7 100644 --- a/src/ol/format/topojsonformat.js +++ b/src/ol/format/topojsonformat.js @@ -253,6 +253,12 @@ ol.format.TopoJSON.readFeatureFromGeometry_ = function(object, arcs, } var feature = new ol.Feature(); feature.setGeometry(geometry); + if (goog.isDef(object.id)) { + feature.setId(object.id); + } + if (goog.isDef(object.properties)) { + feature.setValues(object.properties); + } return feature; }; diff --git a/test/spec/ol/format/topojson.test.js b/test/spec/ol/format/topojson.test.js index fc6c7a9fbf..aced8a7066 100644 --- a/test/spec/ol/format/topojson.test.js +++ b/test/spec/ol/format/topojson.test.js @@ -9,6 +9,9 @@ var aruba = { objects: { aruba: { type: 'Polygon', + properties: { + prop0: 'value0' + }, arcs: [[0]], id: 533 } @@ -46,6 +49,11 @@ describe('ol.format.TopoJSON', function() { var geometry = feature.getGeometry(); expect(geometry).to.be.a(ol.geom.Polygon); + // Parses identifier + expect(feature.getId()).to.be(533); + // Parses properties + expect(feature.get('prop0')).to.be('value0'); + expect(geometry.getExtent()).to.eql([ -70.08100810081008, 12.417091709170947, -69.9009900990099, 12.608069195591469