[OpenLayers-Commits] r2023 - in sandbox/vector/lib/OpenLayers/Control: EditingMode EditingTool
commits at openlayers.org
commits at openlayers.org
Thu Dec 7 13:17:31 EST 2006
Author: pgiraud
Date: 2006-12-07 13:17:28 -0500 (Thu, 07 Dec 2006)
New Revision: 2023
Modified:
sandbox/vector/lib/OpenLayers/Control/EditingMode/PointSnapping.js
sandbox/vector/lib/OpenLayers/Control/EditingTool/MovePathPoint.js
sandbox/vector/lib/OpenLayers/Control/EditingTool/RemovePathPoint.js
Log:
closest vertex computation changed to use distance2Pts
Modified: sandbox/vector/lib/OpenLayers/Control/EditingMode/PointSnapping.js
===================================================================
--- sandbox/vector/lib/OpenLayers/Control/EditingMode/PointSnapping.js 2006-12-07 12:39:11 UTC (rev 2022)
+++ sandbox/vector/lib/OpenLayers/Control/EditingMode/PointSnapping.js 2006-12-07 18:17:28 UTC (rev 2023)
@@ -30,28 +30,30 @@
layer.renderer.drawGeometry(this.tmpPoint, this.style);
} else if (targetGeometry && targetGeometry.path) {
-
+ var distance = this.tolerance
for(var i = 0; i < targetGeometry.path.length; i++) {
- var point = targetGeometry.path[i];
-
// Calculate screen pixel from segment points and mouseCoordinates
- var pixel = layer.map.getPixelFromLonLat(point);
+ var pixel = layer.map.getPixelFromLonLat(targetGeometry.path[i]);
var mousePixel = layer.map.getPixelFromLonLat(mouseCoordinates);
-
+
// Compare first segment point pixel to mouse pixel with a tolerance
- if (Math.abs(mousePixel.x - pixel.x) < this.tolerance && Math.abs(mousePixel.y - pixel.y) < this.tolerance) {
- snappingPoint = point;
- snappingPoint.isSnappingElement = true;
-
- // Set the snapping style an draw the geometry
- this.tmpPoint.x = snappingPoint.x;
- this.tmpPoint.y = snappingPoint.y;
- layer.renderer.drawGeometry(this.tmpPoint, this.style);
-
- break;
+ var currentDistance = OpenLayers.Util.distance2Pts(pixel.x, pixel.y, mousePixel.x, mousePixel.y);
+ if (currentDistance < distance) {
+ closestVertexIndex = i;
+ distance = currentDistance;
}
}
+ var point = targetGeometry.path[closestVertexIndex];
+
+ snappingPoint = point;
+ snappingPoint.isSnappingElement = true;
+
+ // Set the snapping style an draw the geometry
+ this.tmpPoint.x = snappingPoint.x;
+ this.tmpPoint.y = snappingPoint.y;
+ layer.renderer.drawGeometry(this.tmpPoint, this.style);
+
} else if (targetGeometry && targetGeometry.components) {
for (var i = 0; i < targetGeometry.components.length; i++) {
snappingPoint = this.calculatePoint(mouseCoordinates, targetGeometry.components[i], currentGeometry, layer);
Modified: sandbox/vector/lib/OpenLayers/Control/EditingTool/MovePathPoint.js
===================================================================
--- sandbox/vector/lib/OpenLayers/Control/EditingTool/MovePathPoint.js 2006-12-07 12:39:11 UTC (rev 2022)
+++ sandbox/vector/lib/OpenLayers/Control/EditingTool/MovePathPoint.js 2006-12-07 18:17:28 UTC (rev 2023)
@@ -98,7 +98,7 @@
* @param {OpenLayers.LonLat} mouseCoordinates
*/
_handleSelection: function(geometry, mouseCoordinates) {
-
+ var distance = this.tolerance
for(var i = 0; i < geometry.path.length; i++) {
var tmpPoint = geometry.path[i];
@@ -108,12 +108,15 @@
var mousePixel = this.layer.map.getPixelFromLonLat(mouseCoordinates);
// Compare first segment point pixel to mouse pixel with a tolerance
- if (Math.abs(mousePixel.x - pixel.x) < this.tolerance && Math.abs(mousePixel.y - pixel.y) < this.tolerance) {
- var point = tmpPoint;
- break;
+ var currentDistance = OpenLayers.Util.distance2Pts(pixel.x, pixel.y, mousePixel.x, mousePixel.y);
+ if (currentDistance < distance) {
+ closestVertexIndex = i;
+ distance = currentDistance;
}
}
-
+
+ var point = geometry.path[closestVertexIndex];
+
// Point Selection
if (point) {
// Multiple point Selection
Modified: sandbox/vector/lib/OpenLayers/Control/EditingTool/RemovePathPoint.js
===================================================================
--- sandbox/vector/lib/OpenLayers/Control/EditingTool/RemovePathPoint.js 2006-12-07 12:39:11 UTC (rev 2022)
+++ sandbox/vector/lib/OpenLayers/Control/EditingTool/RemovePathPoint.js 2006-12-07 18:17:28 UTC (rev 2023)
@@ -44,16 +44,21 @@
defaultMouseDown: function(evt) {
OpenLayers.Control.EditingTool.prototype.defaultMouseDown.apply(this, arguments);
- if (evt.targetGeometry && evt.targetGeometry.path){
- for(var i = 0; i < evt.targetGeometry.path.length; i++){
+ var distance = this.tolerance
+ if (evt.targetGeometry && evt.targetGeometry.path) {
+ for(var i = 0; i < evt.targetGeometry.path.length; i++) {
var pixel = this.layer.map.getPixelFromLonLat(evt.targetGeometry.path[i]);
- if (Math.abs(evt.xy.x - pixel.x) > this.tolerance && Math.abs(evt.xy.y - pixel.y) > this.tolerance) {
- this.layer.renderer.drawGeometry(evt.targetGeometry.path[i], this.layer.style);
- evt.targetGeometry.removePoint(evt.targetGeometry.path[i]);
- break;
+
+ var currentDistance = OpenLayers.Util.distance2Pts(pixel.x, pixel.y, evt.xy.x, evt.xy.y);
+ if (currentDistance < distance) {
+ closestVertexIndex = i;
+ distance = currentDistance;
}
}
+ evt.targetGeometry.removePoint(evt.targetGeometry.path[closestVertexIndex]);
+
this.layer.updateFeatures([evt.targetGeometry.feature]);
+ this.layer.renderer.drawGeometry(evt.targetGeometry, this.layer.style);
}
},
More information about the Commits
mailing list