You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.2 KiB
69 lines
2.2 KiB
function streamGeometry(geometry, stream) { |
|
if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) { |
|
streamGeometryType[geometry.type](geometry, stream); |
|
} |
|
} |
|
|
|
var streamObjectType = { |
|
Feature: function(object, stream) { |
|
streamGeometry(object.geometry, stream); |
|
}, |
|
FeatureCollection: function(object, stream) { |
|
var features = object.features, i = -1, n = features.length; |
|
while (++i < n) streamGeometry(features[i].geometry, stream); |
|
} |
|
}; |
|
|
|
var streamGeometryType = { |
|
Sphere: function(object, stream) { |
|
stream.sphere(); |
|
}, |
|
Point: function(object, stream) { |
|
object = object.coordinates; |
|
stream.point(object[0], object[1], object[2]); |
|
}, |
|
MultiPoint: function(object, stream) { |
|
var coordinates = object.coordinates, i = -1, n = coordinates.length; |
|
while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]); |
|
}, |
|
LineString: function(object, stream) { |
|
streamLine(object.coordinates, stream, 0); |
|
}, |
|
MultiLineString: function(object, stream) { |
|
var coordinates = object.coordinates, i = -1, n = coordinates.length; |
|
while (++i < n) streamLine(coordinates[i], stream, 0); |
|
}, |
|
Polygon: function(object, stream) { |
|
streamPolygon(object.coordinates, stream); |
|
}, |
|
MultiPolygon: function(object, stream) { |
|
var coordinates = object.coordinates, i = -1, n = coordinates.length; |
|
while (++i < n) streamPolygon(coordinates[i], stream); |
|
}, |
|
GeometryCollection: function(object, stream) { |
|
var geometries = object.geometries, i = -1, n = geometries.length; |
|
while (++i < n) streamGeometry(geometries[i], stream); |
|
} |
|
}; |
|
|
|
function streamLine(coordinates, stream, closed) { |
|
var i = -1, n = coordinates.length - closed, coordinate; |
|
stream.lineStart(); |
|
while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]); |
|
stream.lineEnd(); |
|
} |
|
|
|
function streamPolygon(coordinates, stream) { |
|
var i = -1, n = coordinates.length; |
|
stream.polygonStart(); |
|
while (++i < n) streamLine(coordinates[i], stream, 1); |
|
stream.polygonEnd(); |
|
} |
|
|
|
export default function(object, stream) { |
|
if (object && streamObjectType.hasOwnProperty(object.type)) { |
|
streamObjectType[object.type](object, stream); |
|
} else { |
|
streamGeometry(object, stream); |
|
} |
|
}
|
|
|