diff --git a/src/ol/format/topojsonformat.js b/src/ol/format/topojsonformat.js index 1a4cdb87b8..c5c14b0b3e 100644 --- a/src/ol/format/topojsonformat.js +++ b/src/ol/format/topojsonformat.js @@ -260,7 +260,7 @@ ol.format.TopoJSON.readFeatureFromGeometry_ = function(object, arcs, var feature = new ol.Feature(); feature.setGeometry(/** @type {ol.geom.Geometry} */ ( ol.format.Feature.transformWithOptions(geometry, false, opt_options))); - if (object.id) { + if (object.id !== undefined) { feature.setId(object.id); } if (object.properties) { diff --git a/test/spec/ol/format/topojson.test.js b/test/spec/ol/format/topojson.test.js index 47f0ac7acd..df876986b0 100644 --- a/test/spec/ol/format/topojson.test.js +++ b/test/spec/ol/format/topojson.test.js @@ -22,6 +22,16 @@ var aruba = { ] }; +var zeroId = { + type: 'Topology', + objects: { + foobar: { + type: 'Point', + id: 0, + coordinates: [0, 42] + } + } +}; describe('ol.format.TopoJSON', function() { @@ -60,6 +70,15 @@ describe('ol.format.TopoJSON', function() { ]); }); + it('can read a feature with id equal to 0', function() { + var features = format.readFeaturesFromObject(zeroId); + expect(features).to.have.length(1); + + var feature = features[0]; + expect(feature).to.be.a(ol.Feature); + expect(feature.getId()).to.be(0); + }); + }); describe('#readFeatures()', function() {