KML: fix GeometryCollection write

This commit is contained in:
Peter Robins
2016-04-10 16:36:31 +00:00
parent 1ecd47aeb9
commit 27f20e2f54
2 changed files with 47 additions and 5 deletions

View File

@@ -2313,11 +2313,12 @@ ol.format.KML.writeLineStyle_ = function(node, style, objectStack) {
*/
ol.format.KML.writeMultiGeometry_ = function(node, geometry, objectStack) {
goog.asserts.assert(
(geometry instanceof ol.geom.GeometryCollection) ||
(geometry instanceof ol.geom.MultiPoint) ||
(geometry instanceof ol.geom.MultiLineString) ||
(geometry instanceof ol.geom.MultiPolygon),
'geometry should be one of: ol.geom.MultiPoint, ' +
'ol.geom.MultiLineString or ol.geom.MultiPolygon');
'geometry should be one of: ol.geom.GeometryCollection, ' +
'ol.geom.MultiPoint, ol.geom.MultiLineString or ol.geom.MultiPolygon');
/** @type {ol.xml.NodeStackItem} */
var context = {node: node};
var type = geometry.getType();
@@ -2325,7 +2326,10 @@ ol.format.KML.writeMultiGeometry_ = function(node, geometry, objectStack) {
var geometries;
/** @type {function(*, Array.<*>, string=): (Node|undefined)} */
var factory;
if (type == ol.geom.GeometryType.MULTI_POINT) {
if (type == ol.geom.GeometryType.GEOMETRY_COLLECTION) {
geometries = geometry.getGeometries();
factory = ol.format.KML.GEOMETRY_NODE_FACTORY_;
} else if (type == ol.geom.GeometryType.MULTI_POINT) {
geometries =
(/** @type {ol.geom.MultiPoint} */ (geometry)).getPoints();
factory = ol.format.KML.POINT_NODE_FACTORY_;
@@ -2582,7 +2586,8 @@ ol.format.KML.GEOMETRY_TYPE_TO_NODENAME_ = {
'Polygon': 'Polygon',
'MultiPoint': 'MultiGeometry',
'MultiLineString': 'MultiGeometry',
'MultiPolygon': 'MultiGeometry'
'MultiPolygon': 'MultiGeometry',
'GeometryCollection': 'MultiGeometry'
};
@@ -2711,7 +2716,9 @@ ol.format.KML.MULTI_GEOMETRY_SERIALIZERS_ = ol.xml.makeStructureNS(
ol.format.KML.writePrimitiveGeometry_),
'Point': ol.xml.makeChildAppender(
ol.format.KML.writePrimitiveGeometry_),
'Polygon': ol.xml.makeChildAppender(ol.format.KML.writePolygon_)
'Polygon': ol.xml.makeChildAppender(ol.format.KML.writePolygon_),
'GeometryCollection': ol.xml.makeChildAppender(
ol.format.KML.writeMultiGeometry_)
});