diff --git a/src/ol/format/kml.js b/src/ol/format/kml.js index 0e2b7bbf62..eff0966db2 100644 --- a/src/ol/format/kml.js +++ b/src/ol/format/kml.js @@ -1065,19 +1065,25 @@ ol.format.KML.setCommonGeometryProperties_ = function(multiGeometry, geometries) { var ii = geometries.length; var extrudes = new Array(geometries.length); + var tessellates = new Array(geometries.length); var altitudeModes = new Array(geometries.length); - var geometry, i, hasExtrude, hasAltitudeMode; - hasExtrude = hasAltitudeMode = false; + var geometry, i, hasExtrude, hasTessellate, hasAltitudeMode; + hasExtrude = hasTessellate = hasAltitudeMode = false; for (i = 0; i < ii; ++i) { geometry = geometries[i]; extrudes[i] = geometry.get('extrude'); + tessellates[i] = geometry.get('tessellate'); altitudeModes[i] = geometry.get('altitudeMode'); hasExtrude = hasExtrude || extrudes[i] !== undefined; + hasTessellate = hasTessellate || tessellates[i] !== undefined; hasAltitudeMode = hasAltitudeMode || altitudeModes[i]; } if (hasExtrude) { multiGeometry.set('extrude', extrudes); } + if (hasTessellate) { + multiGeometry.set('tessellate', tessellates); + } if (hasAltitudeMode) { multiGeometry.set('altitudeMode', altitudeModes); } @@ -1371,6 +1377,7 @@ ol.format.KML.LOD_PARSERS_ = ol.xml.makeStructureNS( ol.format.KML.EXTRUDE_AND_ALTITUDE_MODE_PARSERS_ = ol.xml.makeStructureNS( ol.format.KML.NAMESPACE_URIS_, { 'extrude': ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean), + 'tessellate': ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean), 'altitudeMode': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString) }); diff --git a/test/spec/ol/format/kml.test.js b/test/spec/ol/format/kml.test.js index fc2ea80bd1..02d20dbdaa 100644 --- a/test/spec/ol/format/kml.test.js +++ b/test/spec/ol/format/kml.test.js @@ -412,6 +412,7 @@ describe('ol.format.KML', function() { ' ' + ' 1,2,3 4,5,6' + ' 0' + + ' 1' + ' absolute' + ' ' + ' ' + @@ -424,6 +425,7 @@ describe('ol.format.KML', function() { expect(g).to.be.an(ol.geom.LineString); expect(g.getCoordinates()).to.eql([[1, 2, 3], [4, 5, 6]]); expect(g.get('extrude')).to.be(false); + expect(g.get('tessellate')).to.be(true); expect(g.get('altitudeMode')).to.be('absolute'); }); @@ -964,6 +966,7 @@ describe('ol.format.KML', function() { ' ' + ' ' + ' 0' + + ' 0' + ' absolute' + ' 1,2,3 4,5,6' + ' ' + @@ -985,6 +988,10 @@ describe('ol.format.KML', function() { expect(g.get('extrude')).to.have.length(2); expect(g.get('extrude')[0]).to.be(false); expect(g.get('extrude')[1]).to.be(undefined); + expect(g.get('tessellate')).to.be.an('array'); + expect(g.get('tessellate')).to.have.length(2); + expect(g.get('tessellate')[0]).to.be(false); + expect(g.get('tessellate')[1]).to.be(undefined); expect(g.get('altitudeMode')).to.be.an('array'); expect(g.get('altitudeMode')).to.have.length(2); expect(g.get('altitudeMode')[0]).to.be('absolute');