Adding missing schemalocation, version
This commit is contained in:
@@ -57,11 +57,20 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
extractAttributes: true,
|
extractAttributes: true,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* APIProperty: gpxns
|
* Property: namespaces
|
||||||
* {String} GPX namespace to use. Defaults to
|
* {Object} Mapping of namespace aliases to namespace URIs.
|
||||||
* "http://www.topografix.com/GPX/1/1"
|
|
||||||
*/
|
*/
|
||||||
gpxns: "http://www.topografix.com/GPX/1/1",
|
namespaces: {
|
||||||
|
gpx: "http://www.topografix.com/GPX/1/1",
|
||||||
|
xsi: "http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Property: schemaLocation
|
||||||
|
* {String} Schema location. Defaults to
|
||||||
|
* "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"
|
||||||
|
*/
|
||||||
|
schemaLocation: "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd",
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor: OpenLayers.Format.GPX
|
* Constructor: OpenLayers.Format.GPX
|
||||||
@@ -207,17 +216,21 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
* add to the gpx. Supported keys are 'name', 'desc', 'author'.
|
* add to the gpx. Supported keys are 'name', 'desc', 'author'.
|
||||||
*/
|
*/
|
||||||
write: function(features, metadata) {
|
write: function(features, metadata) {
|
||||||
var gpx;
|
|
||||||
features = OpenLayers.Util.isArray(features) ?
|
features = OpenLayers.Util.isArray(features) ?
|
||||||
features : [features];
|
features : [features];
|
||||||
gpx = this.createElementNS(this.gpxns, "gpx");
|
var gpx = this.createElementNS(this.namespaces["gpx"], "gpx");
|
||||||
|
gpx.setAttribute("version", "1.1");
|
||||||
|
this.setAttributeNS(
|
||||||
|
gpx, this.namespaces["xsi"],
|
||||||
|
"xsi:schemaLocation", this.schemaLocation
|
||||||
|
);
|
||||||
|
|
||||||
for(var i=0, len=features.length; i<len; i++) {
|
|
||||||
gpx.appendChild(this.buildFeatureNode(features[i]));
|
|
||||||
}
|
|
||||||
if (metadata && typeof metadata == 'object') {
|
if (metadata && typeof metadata == 'object') {
|
||||||
gpx.appendChild(this.buildMetadataNode(metadata));
|
gpx.appendChild(this.buildMetadataNode(metadata));
|
||||||
}
|
}
|
||||||
|
for(var i=0, len=features.length; i<len; i++) {
|
||||||
|
gpx.appendChild(this.buildFeatureNode(features[i]));
|
||||||
|
}
|
||||||
return OpenLayers.Format.XML.prototype.write.apply(this, [gpx]);
|
return OpenLayers.Format.XML.prototype.write.apply(this, [gpx]);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -230,11 +243,11 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
*/
|
*/
|
||||||
buildMetadataNode: function(metadata) {
|
buildMetadataNode: function(metadata) {
|
||||||
var types = ['name', 'desc', 'author'],
|
var types = ['name', 'desc', 'author'],
|
||||||
node = this.createElementNS(this.gpxns, 'metadata');
|
node = this.createElementNS(this.namespaces["gpx"], 'metadata');
|
||||||
for (var i=0; i < types.length; i++) {
|
for (var i=0; i < types.length; i++) {
|
||||||
var type = types[i];
|
var type = types[i];
|
||||||
if (metadata[type]) {
|
if (metadata[type]) {
|
||||||
var n = this.createElementNS(this.gpxns, type);
|
var n = this.createElementNS(this.namespaces["gpx"], type);
|
||||||
n.appendChild(this.createTextNode(metadata[type]));
|
n.appendChild(this.createTextNode(metadata[type]));
|
||||||
node.appendChild(n);
|
node.appendChild(n);
|
||||||
}
|
}
|
||||||
@@ -263,7 +276,7 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
var wpt = this.buildWptNode(feature);
|
var wpt = this.buildWptNode(feature);
|
||||||
return wpt;
|
return wpt;
|
||||||
} else {
|
} else {
|
||||||
var trkNode = this.createElementNS(this.gpxns, "trk");
|
var trkNode = this.createElementNS(this.namespaces["gpx"], "trk");
|
||||||
this.appendAttributesNode(trkNode, feature);
|
this.appendAttributesNode(trkNode, feature);
|
||||||
var trkSegNodes = this.buildTrkSegNode(geometry);
|
var trkSegNodes = this.buildTrkSegNode(geometry);
|
||||||
trkSegNodes = OpenLayers.Util.isArray(trkSegNodes) ?
|
trkSegNodes = OpenLayers.Util.isArray(trkSegNodes) ?
|
||||||
@@ -291,7 +304,7 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
nodes;
|
nodes;
|
||||||
if (geometry.CLASS_NAME == "OpenLayers.Geometry.LineString" ||
|
if (geometry.CLASS_NAME == "OpenLayers.Geometry.LineString" ||
|
||||||
geometry.CLASS_NAME == "OpenLayers.Geometry.LinearRing") {
|
geometry.CLASS_NAME == "OpenLayers.Geometry.LinearRing") {
|
||||||
node = this.createElementNS(this.gpxns, "trkseg");
|
node = this.createElementNS(this.namespaces["gpx"], "trkseg");
|
||||||
for (i = 0, len=geometry.components.length; i < len; i++) {
|
for (i = 0, len=geometry.components.length; i < len; i++) {
|
||||||
point = geometry.components[i];
|
point = geometry.components[i];
|
||||||
node.appendChild(this.buildTrkPtNode(point));
|
node.appendChild(this.buildTrkPtNode(point));
|
||||||
@@ -317,7 +330,7 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
* {DOMElement} A trkpt node
|
* {DOMElement} A trkpt node
|
||||||
*/
|
*/
|
||||||
buildTrkPtNode: function(point) {
|
buildTrkPtNode: function(point) {
|
||||||
var node = this.createElementNS(this.gpxns, "trkpt");
|
var node = this.createElementNS(this.namespaces["gpx"], "trkpt");
|
||||||
node.setAttribute("lon", point.x);
|
node.setAttribute("lon", point.x);
|
||||||
node.setAttribute("lat", point.y);
|
node.setAttribute("lat", point.y);
|
||||||
return node;
|
return node;
|
||||||
@@ -334,7 +347,7 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
* {DOMElement} A wpt node
|
* {DOMElement} A wpt node
|
||||||
*/
|
*/
|
||||||
buildWptNode: function(feature) {
|
buildWptNode: function(feature) {
|
||||||
var node = this.createElementNS(this.gpxns, "wpt");
|
var node = this.createElementNS(this.namespaces["gpx"], "wpt");
|
||||||
node.setAttribute("lon", feature.geometry.x);
|
node.setAttribute("lon", feature.geometry.x);
|
||||||
node.setAttribute("lat", feature.geometry.y);
|
node.setAttribute("lat", feature.geometry.y);
|
||||||
this.appendAttributesNode(node, feature);
|
this.appendAttributesNode(node, feature);
|
||||||
@@ -350,11 +363,11 @@ OpenLayers.Format.GPX = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
* feature - {<OpenLayers.Feature.Vector>}
|
* feature - {<OpenLayers.Feature.Vector>}
|
||||||
*/
|
*/
|
||||||
appendAttributesNode: function(node, feature) {
|
appendAttributesNode: function(node, feature) {
|
||||||
var name = this.createElementNS(this.gpxns, 'name');
|
var name = this.createElementNS(this.namespaces["gpx"], 'name');
|
||||||
name.appendChild(this.createTextNode(
|
name.appendChild(this.createTextNode(
|
||||||
feature.attributes.name || feature.id));
|
feature.attributes.name || feature.id));
|
||||||
node.appendChild(name);
|
node.appendChild(name);
|
||||||
var desc = this.createElementNS(this.gpxns, 'desc');
|
var desc = this.createElementNS(this.namespaces["gpx"], 'desc');
|
||||||
desc.appendChild(this.createTextNode(
|
desc.appendChild(this.createTextNode(
|
||||||
feature.attributes.description || this.defaultDesc));
|
feature.attributes.description || this.defaultDesc));
|
||||||
node.appendChild(desc);
|
node.appendChild(desc);
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
new OpenLayers.Feature.Vector(point2, {name: 'foo', description: 'bar'})
|
new OpenLayers.Feature.Vector(point2, {name: 'foo', description: 'bar'})
|
||||||
];
|
];
|
||||||
var data = parser.write(features);
|
var data = parser.write(features);
|
||||||
t.xml_eq(data, '<?xml version="1.0" encoding="ISO-8859-1"?><gpx xmlns="http://www.topografix.com/GPX/1/1"><wpt lon="-111.04" lat="45.68"><name>foo</name><desc>bar</desc></wpt><wpt lon="-112.04" lat="45.68"><name>foo</name><desc>bar</desc></wpt></gpx>', 'GPX serializes points correctly');
|
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><wpt lon="-111.04" lat="45.68"><name>foo</name><desc>bar</desc></wpt><wpt lon="-112.04" lat="45.68"><name>foo</name><desc>bar</desc></wpt></gpx>', 'GPX serializes points correctly');
|
||||||
}
|
}
|
||||||
function test_Format_GPX_serialize_line(t) {
|
function test_Format_GPX_serialize_line(t) {
|
||||||
t.plan(1);
|
t.plan(1);
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
var line = new OpenLayers.Geometry.LineString([point, point2]);
|
var line = new OpenLayers.Geometry.LineString([point, point2]);
|
||||||
var f = new OpenLayers.Feature.Vector(line, {name: 'foo', description: 'bar'});
|
var f = new OpenLayers.Feature.Vector(line, {name: 'foo', description: 'bar'});
|
||||||
var data = parser.write(f);
|
var data = parser.write(f);
|
||||||
t.xml_eq(data, '<?xml version="1.0" encoding="ISO-8859-1"?><gpx xmlns="http://www.topografix.com/GPX/1/1"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg></trk></gpx>', 'GPX serializes line correctly');
|
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg></trk></gpx>', 'GPX serializes line correctly');
|
||||||
}
|
}
|
||||||
function test_Format_GPX_serialize_lines(t) {
|
function test_Format_GPX_serialize_lines(t) {
|
||||||
t.plan(1);
|
t.plan(1);
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
var f = new OpenLayers.Feature.Vector(line, {name: 'foo', description: 'bar'});
|
var f = new OpenLayers.Feature.Vector(line, {name: 'foo', description: 'bar'});
|
||||||
var f2 = new OpenLayers.Feature.Vector(line2, {name: 'dude', description: 'truite'});
|
var f2 = new OpenLayers.Feature.Vector(line2, {name: 'dude', description: 'truite'});
|
||||||
var data = parser.write([f, f2]);
|
var data = parser.write([f, f2]);
|
||||||
t.xml_eq(data, '<?xml version="1.0" encoding="ISO-8859-1"?><gpx xmlns="http://www.topografix.com/GPX/1/1"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg></trk><trk><name>dude</name><desc>truite</desc><trkseg><trkpt lon="1" lat="2"/><trkpt lon="3" lat="4"/></trkseg></trk></gpx>', 'GPX serializes lines correctly');
|
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg></trk><trk><name>dude</name><desc>truite</desc><trkseg><trkpt lon="1" lat="2"/><trkpt lon="3" lat="4"/></trkseg></trk></gpx>', 'GPX serializes lines correctly');
|
||||||
}
|
}
|
||||||
function test_Format_GPX_serialize_multiline(t) {
|
function test_Format_GPX_serialize_multiline(t) {
|
||||||
t.plan(1);
|
t.plan(1);
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
var multiline = new OpenLayers.Geometry.MultiLineString([line, line2]);
|
var multiline = new OpenLayers.Geometry.MultiLineString([line, line2]);
|
||||||
var f = new OpenLayers.Feature.Vector(multiline, {name: 'foo', description: 'bar'});
|
var f = new OpenLayers.Feature.Vector(multiline, {name: 'foo', description: 'bar'});
|
||||||
var data = parser.write([f]);
|
var data = parser.write([f]);
|
||||||
t.xml_eq(data, '<?xml version="1.0" encoding="ISO-8859-1"?><gpx xmlns="http://www.topografix.com/GPX/1/1"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg><trkseg><trkpt lon="1" lat="2"/><trkpt lon="3" lat="4"/></trkseg></trk></gpx>', 'GPX serializes multiline correctly');
|
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/></trkseg><trkseg><trkpt lon="1" lat="2"/><trkpt lon="3" lat="4"/></trkseg></trk></gpx>', 'GPX serializes multiline correctly');
|
||||||
}
|
}
|
||||||
function test_Format_GPX_serialize_polygon(t) {
|
function test_Format_GPX_serialize_polygon(t) {
|
||||||
t.plan(1);
|
t.plan(1);
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
var polygon = new OpenLayers.Geometry.Polygon([linearRing]);
|
var polygon = new OpenLayers.Geometry.Polygon([linearRing]);
|
||||||
var f = new OpenLayers.Feature.Vector(polygon, {name: 'foo', description: 'bar'});
|
var f = new OpenLayers.Feature.Vector(polygon, {name: 'foo', description: 'bar'});
|
||||||
var data = parser.write([f]);
|
var data = parser.write([f]);
|
||||||
t.xml_eq(data, '<?xml version="1.0" encoding="ISO-8859-1"?><gpx xmlns="http://www.topografix.com/GPX/1/1"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/><trkpt lon="-111.04" lat="45.68"/></trkseg></trk></gpx>', 'GPX serializes polygon correctly');
|
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><trk><name>foo</name><desc>bar</desc><trkseg><trkpt lon="-111.04" lat="45.68"/><trkpt lon="-112.04" lat="45.68"/><trkpt lon="-111.04" lat="45.68"/></trkseg></trk></gpx>', 'GPX serializes polygon correctly');
|
||||||
}
|
}
|
||||||
function test_Format_GPX_serialize_metadata(t) {
|
function test_Format_GPX_serialize_metadata(t) {
|
||||||
t.plan(1);
|
t.plan(1);
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
var parser = new OpenLayers.Format.GPX();
|
var parser = new OpenLayers.Format.GPX();
|
||||||
|
|
||||||
var data = parser.write([], {name: 'foo', desc: 'bar'});
|
var data = parser.write([], {name: 'foo', desc: 'bar'});
|
||||||
t.xml_eq(data, '<?xml version="1.0" encoding="ISO-8859-1"?><gpx xmlns="http://www.topografix.com/GPX/1/1"><metadata><name>foo</name><desc>bar</desc></metadata></gpx>', 'GPX serializes metadata correctly');
|
t.xml_eq(data, '<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><metadata><name>foo</name><desc>bar</desc></metadata></gpx>', 'GPX serializes metadata correctly');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
Reference in New Issue
Block a user