EncodedPolyline: Allow setting geometryType to "point

This commit is contained in:
Tobias Bieniek
2012-12-27 23:19:44 +01:00
parent c118d9884d
commit 8651e05e75
2 changed files with 13 additions and 3 deletions

View File

@@ -21,7 +21,8 @@ OpenLayers.Format.EncodedPolyline = OpenLayers.Class(OpenLayers.Format, {
/**
* APIProperty: geometryType
* {String} Geometry type to output. One of: linestring (default),
* linearring, multipoint or polygon
* linearring, point, multipoint or polygon. If the geometryType is
* point, only the first point of the string is returned.
*/
geometryType: "linestring",
@@ -58,7 +59,7 @@ OpenLayers.Format.EncodedPolyline = OpenLayers.Class(OpenLayers.Format, {
geomType = OpenLayers.Geometry.LinearRing;
else if (this.geometryType == "multipoint")
geomType = OpenLayers.Geometry.MultiPoint;
else if (this.geometryType != "polygon")
else if (this.geometryType != "point" && this.geometryType != "polygon")
return null;
var points = this.decode(encoded, 2);
@@ -70,6 +71,11 @@ OpenLayers.Format.EncodedPolyline = OpenLayers.Class(OpenLayers.Format, {
);
}
if (this.geometryType == "point")
return new OpenLayers.Feature.Vector(
pointGeometries[0]
);
if (this.geometryType == "polygon")
return new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Polygon([

View File

@@ -51,7 +51,7 @@
}
function test_Format_EncodedPolyline_read(t) {
t.plan(4);
t.plan(5);
var format = new OpenLayers.Format.EncodedPolyline();
@@ -71,6 +71,10 @@
format.geometryType = "polygon";
t.ok(polygon.geometry.equals(format.read(encoded).geometry),
"format correctly reads encoded polygon");
format.geometryType = "point";
t.ok(points[0].equals(format.read(encoded).geometry),
"format correctly reads encoded point");
}
function test_Format_EncodedPolyline_decode(t) {