Add parsing of Tessellate tag in KML fomat

This commit is contained in:
oterral
2017-05-17 14:26:39 +02:00
parent 46c610f35e
commit 132634f10c
2 changed files with 16 additions and 2 deletions
+9 -2
View File
@@ -1065,19 +1065,25 @@ ol.format.KML.setCommonGeometryProperties_ = function(multiGeometry,
geometries) { geometries) {
var ii = geometries.length; var ii = geometries.length;
var extrudes = new Array(geometries.length); var extrudes = new Array(geometries.length);
var tessellates = new Array(geometries.length);
var altitudeModes = new Array(geometries.length); var altitudeModes = new Array(geometries.length);
var geometry, i, hasExtrude, hasAltitudeMode; var geometry, i, hasExtrude, hasTessellate, hasAltitudeMode;
hasExtrude = hasAltitudeMode = false; hasExtrude = hasTessellate = hasAltitudeMode = false;
for (i = 0; i < ii; ++i) { for (i = 0; i < ii; ++i) {
geometry = geometries[i]; geometry = geometries[i];
extrudes[i] = geometry.get('extrude'); extrudes[i] = geometry.get('extrude');
tessellates[i] = geometry.get('tessellate');
altitudeModes[i] = geometry.get('altitudeMode'); altitudeModes[i] = geometry.get('altitudeMode');
hasExtrude = hasExtrude || extrudes[i] !== undefined; hasExtrude = hasExtrude || extrudes[i] !== undefined;
hasTessellate = hasTessellate || tessellates[i] !== undefined;
hasAltitudeMode = hasAltitudeMode || altitudeModes[i]; hasAltitudeMode = hasAltitudeMode || altitudeModes[i];
} }
if (hasExtrude) { if (hasExtrude) {
multiGeometry.set('extrude', extrudes); multiGeometry.set('extrude', extrudes);
} }
if (hasTessellate) {
multiGeometry.set('tessellate', tessellates);
}
if (hasAltitudeMode) { if (hasAltitudeMode) {
multiGeometry.set('altitudeMode', altitudeModes); 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.EXTRUDE_AND_ALTITUDE_MODE_PARSERS_ = ol.xml.makeStructureNS(
ol.format.KML.NAMESPACE_URIS_, { ol.format.KML.NAMESPACE_URIS_, {
'extrude': ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean), 'extrude': ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean),
'tessellate': ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean),
'altitudeMode': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString) 'altitudeMode': ol.xml.makeObjectPropertySetter(ol.format.XSD.readString)
}); });
+7
View File
@@ -412,6 +412,7 @@ describe('ol.format.KML', function() {
' <LineString>' + ' <LineString>' +
' <coordinates>1,2,3 4,5,6</coordinates>' + ' <coordinates>1,2,3 4,5,6</coordinates>' +
' <extrude>0</extrude>' + ' <extrude>0</extrude>' +
' <tessellate>1</tessellate>' +
' <altitudeMode>absolute</altitudeMode>' + ' <altitudeMode>absolute</altitudeMode>' +
' </LineString>' + ' </LineString>' +
' </Placemark>' + ' </Placemark>' +
@@ -424,6 +425,7 @@ describe('ol.format.KML', function() {
expect(g).to.be.an(ol.geom.LineString); expect(g).to.be.an(ol.geom.LineString);
expect(g.getCoordinates()).to.eql([[1, 2, 3], [4, 5, 6]]); expect(g.getCoordinates()).to.eql([[1, 2, 3], [4, 5, 6]]);
expect(g.get('extrude')).to.be(false); expect(g.get('extrude')).to.be(false);
expect(g.get('tessellate')).to.be(true);
expect(g.get('altitudeMode')).to.be('absolute'); expect(g.get('altitudeMode')).to.be('absolute');
}); });
@@ -964,6 +966,7 @@ describe('ol.format.KML', function() {
' <MultiGeometry>' + ' <MultiGeometry>' +
' <LineString>' + ' <LineString>' +
' <extrude>0</extrude>' + ' <extrude>0</extrude>' +
' <tessellate>0</tessellate>' +
' <altitudeMode>absolute</altitudeMode>' + ' <altitudeMode>absolute</altitudeMode>' +
' <coordinates>1,2,3 4,5,6</coordinates>' + ' <coordinates>1,2,3 4,5,6</coordinates>' +
' </LineString>' + ' </LineString>' +
@@ -985,6 +988,10 @@ describe('ol.format.KML', function() {
expect(g.get('extrude')).to.have.length(2); expect(g.get('extrude')).to.have.length(2);
expect(g.get('extrude')[0]).to.be(false); expect(g.get('extrude')[0]).to.be(false);
expect(g.get('extrude')[1]).to.be(undefined); 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.be.an('array');
expect(g.get('altitudeMode')).to.have.length(2); expect(g.get('altitudeMode')).to.have.length(2);
expect(g.get('altitudeMode')[0]).to.be('absolute'); expect(g.get('altitudeMode')[0]).to.be('absolute');