code: function(pixel) {
          var lonlat = this.layer.getLonLatFromViewPortPx(pixel);
          var geometry = new OpenLayers.Geometry.Point(
              lonlat.lon, lonlat.lat
          );
          this.point = new OpenLayers.Feature.Vector(geometry);
          this.line = new OpenLayers.Feature.Vector(
              new OpenLayers.Geometry.LinearRing([this.point.geometry])
          );
          this.polygon = new OpenLayers.Feature.Vector(
              new OpenLayers.Geometry.Polygon([this.line.geometry])
          );
          this.callback("create", [this.point.geometry, this.getSketch()]);
          this.point.geometry.clearBounds();
          this.layer.addFeatures([this.polygon, this.point], {silent: true});
      }
docs: Constructor: OpenLayers.Handler.Polygon
  Create a Polygon Handler.
  
  Parameters:
  control - {<OpenLayers.Control>} The control that owns this handler
  callbacks - {Object} An object with a properties whose values are
  functions.  Various callbacks described below.
  options - {Object} An optional object with properties to be set on the
  handler
  
  Named callbacks:
  create - Called when a sketch is first created.  Callback called with
  the creation point geometry and sketch feature.
  modify - Called with each move of a vertex with the vertex (point)
  geometry and the sketch feature.
  point - Called as each point is added.  Receives the new point geometry.
  done - Called when the point drawing is finished.  The callback will
  recieve a single argument, the polygon geometry.
  cancel - Called when the handler is deactivated while drawing.  The
  cancel callback will receive a geometry.
   
  Method: createFeature
  Add temporary geometries
  
  Parameters:
  pixel - {<OpenLayers.Pixel>} The initial pixel location for the new
  feature.