这是我们在 Legato 中使用的代码:
Legato.Control.DrawFeature = OpenLayers.Class(OpenLayers.Control.DrawFeature, {
mode :1,
callback :null,
handlerConstructor :OpenLayers.Handler.Point,
initialize : function(layer, options) {
OpenLayers.Control.DrawFeature.prototype.initialize.apply(this, [ layer,
this.handlerConstructor, options ]);
},
destroy : function() {
OpenLayers.Control.DrawFeature.prototype.destroy.apply(this, arguments);
},
setMap : function(map) {
OpenLayers.Control.DrawFeature.prototype.setMap.apply(this, arguments);
},
drawFeature : function(geometry) {
var feature = new OpenLayers.Feature.Vector(geometry);
var proceed = this.layer.events.triggerEvent("sketchcomplete", {
feature :feature
});
if (proceed !== false) {
feature.state = OpenLayers.State.INSERT;
if (this.mode == 1) {
this.layer.addFeatures( [ feature ]);
this.featureAdded(feature);
this.events.triggerEvent("featureadded", {
feature :feature
});
}
if (this.mode == 2) {
this.layer.destroyFeatures();
this.layer.addFeatures( [ feature ]);
this.featureAdded(feature);
this.events.triggerEvent("featureadded", {
feature :feature
});
}
}
if (Legato.Lang.ObjectUtils.isFunction(this.callback)) {
this.callback(geometry);
}
},
CLASS_NAME :'Legato.Control.DrawFeature'
});
Legato.Control.DrawFeature.MODE_ADD_FEATURE = 1;
Legato.Control.DrawFeature.MODE_REPLACE_FEATURE = 2;