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:
@@ -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
|
||||
|
||||
@@ -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"
|
||||
});
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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"
|
||||
});
|
||||
|
||||
@@ -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"
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user