diff --git a/src/ol/format/mvt.js b/src/ol/format/mvt.js index 494c0bc3de..c3217627fb 100644 --- a/src/ol/format/mvt.js +++ b/src/ol/format/mvt.js @@ -53,10 +53,9 @@ ol.format.MVT = function(opt_options) { /** * @private - * @type {string} + * @type {string|undefined} */ - this.geometryName_ = options.geometryName ? - options.geometryName : 'geometry'; + this.geometryName_ = options.geometryName; /** * @private @@ -95,15 +94,15 @@ ol.format.MVT.prototype.readFeature_ = function( var id = rawFeature.id; var values = rawFeature.properties; values[this.layerName_] = layer; + if (this.geometryName_) { + feature.setGeometryName(this.geometryName_); + } var geometry = ol.format.Feature.transformWithOptions( ol.format.MVT.readGeometry_(rawFeature), false, this.adaptOptions(opt_options)); - if (geometry) { - values[this.geometryName_] = geometry; - } + feature.setGeometry(geometry); feature.setId(id); feature.setProperties(values); - feature.setGeometryName(this.geometryName_); return feature; }; diff --git a/test/spec/ol/format/mvt.test.js b/test/spec/ol/format/mvt.test.js index 2de0d1b183..978d959c05 100644 --- a/test/spec/ol/format/mvt.test.js +++ b/test/spec/ol/format/mvt.test.js @@ -4,6 +4,7 @@ goog.require('ol.Feature'); goog.require('ol.ext.pbf'); goog.require('ol.ext.vectortile'); goog.require('ol.format.MVT'); +goog.require('ol.geom.Point'); goog.require('ol.render.Feature'); where('ArrayBuffer.isView').describe('ol.format.MVT', function() { @@ -83,3 +84,31 @@ where('ArrayBuffer.isView').describe('ol.format.MVT', function() { }); }); + +describe('ol.format.MVT', function() { + + describe('#readFeature_', function() { + it('accepts a geometryName', function() { + var format = new ol.format.MVT({ + featureClass: ol.Feature, + geometryName: 'myGeom' + }); + var rawFeature = { + id: 1, + properties: { + geometry: 'foo' + }, + type: 1, + loadGeometry: function() { + return [[0, 0]]; + } + }; + var feature = format.readFeature_(rawFeature, 'mapbox'); + var geometry = feature.getGeometry(); + expect(geometry).to.be.a(ol.geom.Point); + expect(feature.get('myGeom')).to.equal(geometry); + expect(feature.get('geometry')).to.be('foo'); + }); + }); + +});