var PolylineTool = MapTool.extend(function (base) { var exports = {} exports.down = function(e, cursor){ // rightclick? if (e.ctrlKey || e.which === 3) { e.preventDefault() e.stopPropagation() if (map.ui.placing) { // close polyline or cancel map.ui.placing = false if (line.points.length > 2) { line.build() } else { line.reset() } return } map.ui.tools.position.rightclick(e, cursor) return } // compare to initial point var p = last_point.clone() if (map.ui.placing) { if (line.canCloseWith(p)) { line.close() line.build() map.ui.placing = false } else { line.add(p) } } else { map.ui.placing = true line = new Polyline () line.add(p) } } exports.move = function(e, cursor){ last_point.a = cursor.x.a last_point.b = cursor.y.a if (map.ui.placing && line.canCloseWith(last_point)) { document.body.style.cursor = "pointer" last_point.assign(line.points[0]) cursor.x.a = cursor.x.b = last_point.a cursor.y.a = cursor.y.b = last_point.b return } var end_point = shapes.findClosestEndPoint(last_point) if (end_point) { document.body.style.cursor = "pointer" last_point.assign(end_point.point) cursor.x.a = cursor.x.b = last_point.a cursor.y.a = cursor.y.b = last_point.b return } else { document.body.style.cursor = "crosshair" } } exports.cancel = function(){ if (map.ui.placing) { line.reset() } map.ui.placing = false } return exports })