Adding getVertices method to all geometries. Call with nodesOnly true if you only want endpoints (of lines and multilines). r=crschmidt (closes #1192)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@8842 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2009-02-05 22:49:03 +00:00
parent dd70dceef9
commit df920a88d5
9 changed files with 190 additions and 0 deletions

View File

@@ -150,6 +150,20 @@ OpenLayers.Geometry = OpenLayers.Class({
distanceTo: function(geometry, options) {
},
/**
* APIMethod: getVertices
* Return a list of all points in this geometry.
*
* Parameters:
* nodesOnly - {Boolean} For lines, only return vertices that are
* endpoints.
*
* Returns:
* {Array} A list of all vertices in the geometry.
*/
getVertices: function(nodesOnly) {
},
/**
* Method: atPoint
* Note - This is only an approximation based on the bounds of the

View File

@@ -401,5 +401,27 @@ OpenLayers.Geometry.Collection = OpenLayers.Class(OpenLayers.Geometry, {
return intersect;
},
/**
* APIMethod: getVertices
* Return a list of all points in this geometry.
*
* Parameters:
* nodesOnly - {Boolean} For lines, only return vertices that are
* endpoints.
*
* Returns:
* {Array} A list of all vertices in the geometry.
*/
getVertices: function(nodesOnly) {
var vertices = [];
for(var i=0, len=this.components.length; i<len; ++i) {
Array.prototype.push.apply(
vertices, this.components[i].getVertices(nodesOnly)
);
}
return vertices;
},
CLASS_NAME: "OpenLayers.Geometry.Collection"
});

View File

@@ -154,6 +154,30 @@ OpenLayers.Geometry.LineString = OpenLayers.Class(OpenLayers.Geometry.Curve, {
return segments.sort(byX1);
},
/**
* APIMethod: getVertices
* Return a list of all points in this geometry.
*
* Parameters:
* nodesOnly - {Boolean} For lines, only return vertices that are
* endpoints.
*
* Returns:
* {Array} A list of all vertices in the geometry.
*/
getVertices: function(nodesOnly) {
var vertices;
if(nodesOnly) {
vertices = [
this.components[0],
this.components[this.components.length-1]
];
} else {
vertices = this.components;
}
return vertices;
},
/**
* APIMethod: distanceTo
* Calculate the closest distance between two geometries.

View File

@@ -324,5 +324,20 @@ OpenLayers.Geometry.LinearRing = OpenLayers.Class(
return intersect;
},
/**
* APIMethod: getVertices
* Return a list of all points in this geometry.
*
* Parameters:
* nodesOnly - {Boolean} For lines, only return vertices that are
* endpoints.
*
* Returns:
* {Array} A list of all vertices in the geometry.
*/
getVertices: function(nodesOnly) {
return nodesOnly ? [] : this.components.slice(0, this.components.length-1);
},
CLASS_NAME: "OpenLayers.Geometry.LinearRing"
});

View File

@@ -250,5 +250,20 @@ OpenLayers.Geometry.Point = OpenLayers.Class(OpenLayers.Geometry, {
return this;
},
/**
* APIMethod: getVertices
* Return a list of all points in this geometry.
*
* Parameters:
* nodesOnly - {Boolean} For lines, only return vertices that are
* endpoints.
*
* Returns:
* {Array} A list of all vertices in the geometry.
*/
getVertices: function(nodesOnly) {
return [this];
},
CLASS_NAME: "OpenLayers.Geometry.Point"
});