diff --git a/lib/OpenLayers/Format/KML.js b/lib/OpenLayers/Format/KML.js index 5046c04c60..b00bf37b71 100644 --- a/lib/OpenLayers/Format/KML.js +++ b/lib/OpenLayers/Format/KML.js @@ -32,19 +32,21 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, { /** * APIProperty: placemarksDesc - * {String} Name of the placemarks. Default is "No description available." + * {String} Name of the placemarks. Default is "No description available". */ placemarksDesc: "No description available", /** * APIProperty: foldersName - * {String} Name of the folders. Default is "OpenLayers export." + * {String} Name of the folders. Default is "OpenLayers export". + * If set to null, no name element will be created. */ foldersName: "OpenLayers export", /** * APIProperty: foldersDesc * {String} Description of the folders. Default is "Exported on [date]." + * If set to null, no description element will be created. */ foldersDesc: "Exported on " + new Date(), @@ -983,21 +985,25 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, { * {DOMElement} */ createFolderXML: function() { - // Folder name - var folderName = this.createElementNS(this.kmlns, "name"); - var folderNameText = this.createTextNode(this.foldersName); - folderName.appendChild(folderNameText); - - // Folder description - var folderDesc = this.createElementNS(this.kmlns, "description"); - var folderDescText = this.createTextNode(this.foldersDesc); - folderDesc.appendChild(folderDescText); - // Folder var folder = this.createElementNS(this.kmlns, "Folder"); - folder.appendChild(folderName); - folder.appendChild(folderDesc); - + + // Folder name + if (this.foldersName) { + var folderName = this.createElementNS(this.kmlns, "name"); + var folderNameText = this.createTextNode(this.foldersName); + folderName.appendChild(folderNameText); + folder.appendChild(folderName); + } + + // Folder description + if (this.foldersDesc) { + var folderDesc = this.createElementNS(this.kmlns, "description"); + var folderDescText = this.createTextNode(this.foldersDesc); + folderDesc.appendChild(folderDescText); + folder.appendChild(folderDesc); + } + return folder; }, diff --git a/tests/Format/KML.html b/tests/Format/KML.html index 3b871475ae..6f8d0973c5 100644 --- a/tests/Format/KML.html +++ b/tests/Format/KML.html @@ -66,9 +66,9 @@ t.plan(1); var kmlExpected = this.test_content; var options = { - folderName: "OpenLayers export", + foldersName: "OpenLayers export", foldersDesc: "Vector geometries from OpenLayers" - } + }; var format = new OpenLayers.Format.KML(options); var features = format.read(kmlExpected); @@ -76,6 +76,20 @@ var kmlOut = kmlOut.replace(/<\?[^>]*\?>/, ''); // Remove XML Prolog t.eq(kmlOut, kmlExpected, "correctly writes an KML doc string"); } + + function test_Format_KML_write_noNameDesc(t) { + t.plan(1); + var format = new OpenLayers.Format.KML({ + foldersName: null, + foldersDesc: null + }); + var geom = new OpenLayers.Geometry.Point(0, 0) + var feature = new OpenLayers.Feature.Vector(geom); + feature.id = 42; + var kmlOut = format.write(feature); + var expected = '42No description available0,0' + t.eq(kmlOut, expected, "null foldersName or foldersDesc don't create elements"); + } function test_Format_KML_write_multis(t) { /**