Add ExtendedData support to KML. r=tschaub, patch mine + his comments,
thx to rdewit for initial help/pointers, (Closes #1955) git-svn-id: http://svn.openlayers.org/trunk/openlayers@9089 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -840,9 +840,17 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
*/
|
||||
parseAttributes: function(node) {
|
||||
var attributes = {};
|
||||
|
||||
// Extended Data is parsed first.
|
||||
var edNodes = node.getElementsByTagName("ExtendedData");
|
||||
if (edNodes.length) {
|
||||
attributes = this.parseExtendedData(edNodes[0]);
|
||||
}
|
||||
|
||||
// assume attribute nodes are type 1 children with a type 3 or 4 child
|
||||
var child, grandchildren, grandchild;
|
||||
var children = node.childNodes;
|
||||
|
||||
for(var i=0, len=children.length; i<len; ++i) {
|
||||
child = children[i];
|
||||
if(child.nodeType == 1) {
|
||||
@@ -874,6 +882,31 @@ OpenLayers.Format.KML = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
return attributes;
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: parseExtendedData
|
||||
* Parse ExtendedData from KML. No support for schemas/datatypes.
|
||||
* See http://code.google.com/apis/kml/documentation/kmlreference.html#extendeddata
|
||||
* for more information on extendeddata.
|
||||
*/
|
||||
parseExtendedData: function(node) {
|
||||
var attributes = {};
|
||||
var dataNodes = node.getElementsByTagName("Data");
|
||||
for (var i = 0, len = dataNodes.length; i < len; i++) {
|
||||
var data = dataNodes[i];
|
||||
var key = data.getAttribute("name");
|
||||
var ed = {};
|
||||
var valueNode = data.getElementsByTagName("value");
|
||||
if (valueNode.length) {
|
||||
ed['value'] = this.concatChildValues(valueNode[0]);
|
||||
}
|
||||
var nameNode = data.getElementsByTagName("displayName");
|
||||
if (nameNode.length) {
|
||||
ed['displayName'] = this.concatChildValues(nameNode[0]);
|
||||
}
|
||||
attributes[key] = ed;
|
||||
}
|
||||
return attributes;
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: parseProperty
|
||||
|
||||
Reference in New Issue
Block a user