polygon.js
来自「用来在地图上做操作GIS,在地图上做标记」· JavaScript 代码 · 共 124 行
JS
124 行
/* Copyright (c) 2006-2007 MetaCarta, Inc., published under the BSD license. * See http://svn.openlayers.org/trunk/openlayers/release-license.txt * for the full text of the license. *//** * @requires OpenLayers/Handler/Path.js * @requires OpenLayers/Geometry/Polygon.js * * Class: OpenLayers.Handler.Polygon * Handler to draw a polygon on the map. Polygon is displayed on mouse down, * moves on mouse move, and is finished on mouse up. * * Inherits from: * - <OpenLayers.Handler.Path> * - <OpenLayers.Handler> */OpenLayers.Handler.Polygon = OpenLayers.Class(OpenLayers.Handler.Path, { /** * Parameter: polygon * {<OpenLayers.Feature.Vector>} */ polygon: null, /** * Constructor: OpenLayers.Handler.Polygon * Create a Polygon Handler. * * Parameters: * control - {<OpenLayers.Control>} * callbacks - {Object} An object with a 'done' property whos value is * a function to be called when the path drawing is * finished. The callback should expect to recieve a * single argument, the polygon geometry. * If the callbacks object contains a 'point' * property, this function will be sent each point * as they are added. If the callbacks object contains * a 'cancel' property, this function will be called when * the handler is deactivated while drawing. The cancel * should expect to receive a geometry. * options - {Object} */ initialize: function(control, callbacks, options) { OpenLayers.Handler.Path.prototype.initialize.apply(this, arguments); }, /** * Method: createFeature * Add temporary geometries */ createFeature: function() { this.polygon = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Polygon()); this.line = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.LinearRing()); this.polygon.geometry.addComponent(this.line.geometry); this.point = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Point()); }, /** * Method: destroyFeature * Destroy temporary geometries */ destroyFeature: function() { OpenLayers.Handler.Path.prototype.destroyFeature.apply(this); this.polygon.destroy(); this.polygon = null; }, /** * Method: modifyFeature * Modify the existing geometry given the new point * */ modifyFeature: function() { var index = this.line.geometry.components.length - 2; this.line.geometry.components[index].x = this.point.geometry.x; this.line.geometry.components[index].y = this.point.geometry.y; this.line.geometry.components[index].clearBounds(); }, /** * Method: drawFeature * Render geometries on the temporary layer. */ drawFeature: function() { this.layer.drawFeature(this.polygon, this.style); this.layer.drawFeature(this.point, this.style); }, /** * Method: geometryClone * Return a clone of the relevant geometry. * * Returns: * {<OpenLayers.Geometry.Polygon>} */ geometryClone: function() { return this.polygon.geometry.clone(); }, /** * Method: dblclick * Handle double-clicks. Finish the geometry and send it back * to the control. * * Parameters: * evt - {Event} */ dblclick: function(evt) { if(!this.freehandMode(evt)) { // remove the penultimate point var index = this.line.geometry.components.length - 2; this.line.geometry.removeComponent(this.line.geometry.components[index]); this.finalize(); } return false; }, CLASS_NAME: "OpenLayers.Handler.Polygon"});
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?