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');