adding limited support for reading SimpleData from KML ExtendedData SchemaData, keeping structure the same as current ExtendedData support, patch=joh, r=me (closes #2062)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@9795 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -884,16 +884,17 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Method: parseExtendedData
|
* Method: parseExtendedData
|
||||||
* Parse ExtendedData from KML. No support for schemas/datatypes.
|
* Parse ExtendedData from KML. Limited support for schemas/datatypes.
|
||||||
* See http://code.google.com/apis/kml/documentation/kmlreference.html#extendeddata
|
* See http://code.google.com/apis/kml/documentation/kmlreference.html#extendeddata
|
||||||
* for more information on extendeddata.
|
* for more information on extendeddata.
|
||||||
*/
|
*/
|
||||||
parseExtendedData: function(node) {
|
parseExtendedData: function(node) {
|
||||||
var attributes = {};
|
var attributes = {};
|
||||||
|
var i, len, data, key;
|
||||||
var dataNodes = node.getElementsByTagName("Data");
|
var dataNodes = node.getElementsByTagName("Data");
|
||||||
for (var i = 0, len = dataNodes.length; i < len; i++) {
|
for (i = 0, len = dataNodes.length; i < len; i++) {
|
||||||
var data = dataNodes[i];
|
data = dataNodes[i];
|
||||||
var key = data.getAttribute("name");
|
key = data.getAttribute("name");
|
||||||
var ed = {};
|
var ed = {};
|
||||||
var valueNode = data.getElementsByTagName("value");
|
var valueNode = data.getElementsByTagName("value");
|
||||||
if (valueNode.length) {
|
if (valueNode.length) {
|
||||||
@@ -905,6 +906,16 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
|||||||
}
|
}
|
||||||
attributes[key] = ed;
|
attributes[key] = ed;
|
||||||
}
|
}
|
||||||
|
var simpleDataNodes = node.getElementsByTagName("SimpleData");
|
||||||
|
for (i = 0, len = simpleDataNodes.length; i < len; i++) {
|
||||||
|
var ed = {};
|
||||||
|
data = simpleDataNodes[i];
|
||||||
|
key = data.getAttribute("name");
|
||||||
|
ed['value'] = this.getChildValue(data);
|
||||||
|
ed['displayName'] = key;
|
||||||
|
attributes[key] = ed;
|
||||||
|
}
|
||||||
|
|
||||||
return attributes;
|
return attributes;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -160,6 +160,16 @@
|
|||||||
t.eq(features[0].attributes.all_bridges.displayName, "all bridges", "read displayName from extendeddata correctly.");
|
t.eq(features[0].attributes.all_bridges.displayName, "all bridges", "read displayName from extendeddata correctly.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_Format_KML_extendedData_SchemaData(t) {
|
||||||
|
t.plan(4);
|
||||||
|
var f = new OpenLayers.Format.KML();
|
||||||
|
var features = f.read(OpenLayers.Util.getElement("kml_extendeddata2").value);
|
||||||
|
t.eq(features[0].attributes.TrailHeadName.value, "Pi in the sky", "read value from extendeddata (schema data) correctly.");
|
||||||
|
t.eq(features[0].attributes.TrailHeadName.displayName, "TrailHeadName", "read displayName from extendeddata correctly");
|
||||||
|
t.eq(features[0].attributes.ElevationGain.value, "10", "read value from extendeddata (schema data) correctly.");
|
||||||
|
t.eq(features[0].attributes.ElevationGain.displayName, "ElevationGain", "read displayName from extendeddata correctly");
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@@ -208,6 +218,38 @@
|
|||||||
</Placemark>
|
</Placemark>
|
||||||
</Document>
|
</Document>
|
||||||
</kml>
|
</kml>
|
||||||
|
</textarea>
|
||||||
|
<textarea id="kml_extendeddata2" style="display:none">
|
||||||
|
<kml xmlns="http://earth.google.com/kml/2.2">
|
||||||
|
<Document>
|
||||||
|
<Placemark>
|
||||||
|
<name>Easy trail</name>
|
||||||
|
<ExtendedData>
|
||||||
|
<SchemaData schemaUrl="#TrailHeadTypeId">
|
||||||
|
<SimpleData name="TrailHeadName">Pi in the sky</SimpleData>
|
||||||
|
<SimpleData name="TrailLength">3.14159</SimpleData>
|
||||||
|
<SimpleData name="ElevationGain">10</SimpleData>
|
||||||
|
</SchemaData>
|
||||||
|
</ExtendedData>
|
||||||
|
<Point>
|
||||||
|
<coordinates>-122.000,37.002</coordinates>
|
||||||
|
</Point>
|
||||||
|
</Placemark>
|
||||||
|
<Placemark>
|
||||||
|
<name>Difficult trail</name>
|
||||||
|
<ExtendedData>
|
||||||
|
<SchemaData schemaUrl="#TrailHeadTypeId">
|
||||||
|
<SimpleData name="TrailHeadName">Mount Everest</SimpleData>
|
||||||
|
<SimpleData name="TrailLength">347.45</SimpleData>
|
||||||
|
<SimpleData name="ElevationGain">10000</SimpleData>
|
||||||
|
</SchemaData>
|
||||||
|
</ExtendedData>
|
||||||
|
<Point>
|
||||||
|
<coordinates>-122.000,37.002</coordinates>
|
||||||
|
</Point>
|
||||||
|
</Placemark>
|
||||||
|
</Document>
|
||||||
|
</kml>
|
||||||
</textarea>
|
</textarea>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user