Fire change events for multi-part geometries

This commit is contained in:
ahocevar
2013-10-04 23:36:16 -06:00
parent 703564fcbb
commit 52552c9b18
19 changed files with 253 additions and 114 deletions

View File

@@ -315,8 +315,9 @@ ol.parser.GeoJSON.prototype.encodeGeometry_ = function(geometry) {
*/
ol.parser.GeoJSON.prototype.encodeGeometryCollection_ = function(collection) {
var geometries = [];
for (var i = 0, ii = collection.components.length; i < ii; ++i) {
geometries.push(this.encodeGeometry_(collection.components[i]));
var components = collection.getComponents();
for (var i = 0, ii = components.length; i < ii; ++i) {
geometries.push(this.encodeGeometry_(components[i]));
}
return /** @type {GeoJSONGeometryCollection} */({
type: 'GeometryCollection',

View File

@@ -159,8 +159,9 @@ ol.parser.GPX = function(opt_options) {
if (geom instanceof ol.geom.LineString) {
this.writeNode('trkseg', feature.getGeometry(), undefined, node);
} else if (geom instanceof ol.geom.MultiLineString) {
for (i = 0, ii = geom.components.length; i < ii; ++i) {
this.writeNode('trkseg', geom.components[i], undefined, node);
var components = geom.getComponents();
for (i = 0, ii = components.length; i < ii; ++i) {
this.writeNode('trkseg', components[i], undefined, node);
}
} else if (geom instanceof ol.geom.Polygon) {
rings = geom.getRings();

View File

@@ -823,8 +823,9 @@ ol.parser.KML = function(opt_options) {
},
'MultiGeometry': function(geometry) {
var node = this.createElementNS('MultiGeometry');
for (var i = 0, ii = geometry.components.length; i < ii; ++i) {
this.writeNode('_geometry', geometry.components[i], null, node);
var components = geometry.getComponents();
for (var i = 0, ii = components.length; i < ii; ++i) {
this.writeNode('_geometry', components[i], null, node);
}
return node;
},

View File

@@ -340,8 +340,9 @@ ol.parser.ogc.GML = function(opt_options) {
},
'MultiPoint': function(geometry) {
var node = this.createElementNS('gml:MultiPoint');
for (var i = 0, ii = geometry.components.length; i < ii; ++i) {
this.writeNode('pointMember', geometry.components[i], null, node);
var components = geometry.getComponents();
for (var i = 0, ii = components.length; i < ii; ++i) {
this.writeNode('pointMember', components[i], null, node);
}
return node;
},
@@ -352,9 +353,9 @@ ol.parser.ogc.GML = function(opt_options) {
},
'MultiLineString': function(geometry) {
var node = this.createElementNS('gml:MultiLineString');
for (var i = 0, ii = geometry.components.length; i < ii; ++i) {
this.writeNode('lineStringMember', geometry.components[i], null,
node);
var components = geometry.getComponents();
for (var i = 0, ii = components.length; i < ii; ++i) {
this.writeNode('lineStringMember', components[i], null, node);
}
return node;
},
@@ -365,8 +366,9 @@ ol.parser.ogc.GML = function(opt_options) {
},
'MultiPolygon': function(geometry) {
var node = this.createElementNS('gml:MultiPolygon');
for (var i = 0, ii = geometry.components.length; i < ii; ++i) {
this.writeNode('polygonMember', geometry.components[i], null, node);
var components = geometry.getComponents();
for (var i = 0, ii = components.length; i < ii; ++i) {
this.writeNode('polygonMember', components[i], null, node);
}
return node;
},
@@ -377,8 +379,9 @@ ol.parser.ogc.GML = function(opt_options) {
},
'GeometryCollection': function(geometry) {
var node = this.createElementNS('gml:GeometryCollection');
for (var i = 0, ii = geometry.components.length; i < ii; ++i) {
this.writeNode('geometryMember', geometry.components[i], null, node);
var components = geometry.getComponents();
for (var i = 0, ii = components.length; i < ii; ++i) {
this.writeNode('geometryMember', components[i], null, node);
}
return node;
},

View File

@@ -349,8 +349,9 @@ ol.parser.ogc.GML_v3 = function(opt_options) {
},
'MultiCurve': function(geometry) {
var node = this.createElementNS('gml:MultiCurve');
for (var i = 0, len = geometry.components.length; i < len; ++i) {
this.writeNode('curveMember', geometry.components[i], null, node);
var components = geometry.getComponents();
for (var i = 0, len = components.length; i < len; ++i) {
this.writeNode('curveMember', components[i], null, node);
}
return node;
},
@@ -365,8 +366,9 @@ ol.parser.ogc.GML_v3 = function(opt_options) {
},
'MultiSurface': function(geometry) {
var node = this.createElementNS('gml:MultiSurface');
for (var i = 0, len = geometry.components.length; i < len; ++i) {
this.writeNode('surfaceMember', geometry.components[i], null, node);
var components = geometry.getComponents();
for (var i = 0, len = components.length; i < len; ++i) {
this.writeNode('surfaceMember', components[i], null, node);
}
return node;
},

View File

@@ -171,8 +171,9 @@ ol.parser.WKT.prototype.encodePoint_ = function(geom) {
*/
ol.parser.WKT.prototype.encodeMultiPoint_ = function(geom) {
var array = [];
for (var i = 0, ii = geom.components.length; i < ii; ++i) {
array.push('(' + this.encodePoint_.apply(this, [geom.components[i]]) + ')');
var components = geom.getComponents();
for (var i = 0, ii = components.length; i < ii; ++i) {
array.push('(' + this.encodePoint_.apply(this, [components[i]]) + ')');
}
return array.join(',');
};
@@ -185,8 +186,9 @@ ol.parser.WKT.prototype.encodeMultiPoint_ = function(geom) {
*/
ol.parser.WKT.prototype.encodeGeometryCollection_ = function(geom) {
var array = [];
for (var i = 0, ii = geom.components.length; i < ii; ++i) {
array.push(this.encode_.apply(this, [geom.components[i]]));
var components = geom.getComponents();
for (var i = 0, ii = components.length; i < ii; ++i) {
array.push(this.encode_.apply(this, [components[i]]));
}
return array.join(',');
};
@@ -214,9 +216,10 @@ ol.parser.WKT.prototype.encodeLineString_ = function(geom) {
*/
ol.parser.WKT.prototype.encodeMultiLineString_ = function(geom) {
var array = [];
for (var i = 0, ii = geom.components.length; i < ii; ++i) {
var components = geom.getComponents();
for (var i = 0, ii = components.length; i < ii; ++i) {
array.push('(' + this.encodeLineString_.apply(this,
[geom.components[i]]) + ')');
[components[i]]) + ')');
}
return array.join(',');
};
@@ -245,9 +248,9 @@ ol.parser.WKT.prototype.encodePolygon_ = function(geom) {
*/
ol.parser.WKT.prototype.encodeMultiPolygon_ = function(geom) {
var array = [];
for (var i = 0, ii = geom.components.length; i < ii; ++i) {
array.push('(' + this.encodePolygon_.apply(this,
[geom.components[i]]) + ')');
var components = geom.getComponents();
for (var i = 0, ii = components.length; i < ii; ++i) {
array.push('(' + this.encodePolygon_.apply(this, [components[i]]) + ')');
}
return array.join(',');
};