• openlayers2地图控件扩展:要素删除DeleteFeature


    实现要素删除控件,扩展OpenLayers.Control类,实现效果:选择DeleteFeature工具后,选择要素,按delete键删除要素(这里的删除只是将feature设置成delete状态,需提交到远程服务器才能删除数据源中的要素),具体代码如下:

     1 OpenLayers.Control.DeleteFeature = OpenLayers.Class(OpenLayers.Control.SelectFeature, {
     2     deleteCodes: null,
     3     
     4     /*
     5      * layers--Array[]
     6      * options--Object{}
     7      * */
     8     initialize: function(layers, options) {
     9         var me = this;
    10         me.deleteCodes = [46, 68];
    11         OpenLayers.Control.SelectFeature.prototype.initialize.apply(this, arguments);
    12         me.keyboard = new OpenLayers.Handler.Keyboard(this,{
    13             keydown: me.handleKeypress,
    14             scope: me
    15         });
    16     },
    17     handleKeypress: function(evt){
    18         var code = evt.keyCode;
    19         // check for delete key
    20         if(OpenLayers.Util.indexOf(this.deleteCodes, code) != -1){
    21             var feature = this.handlers.feature.feature;
    22             if(!feature)
    23                 return;
    24             
    25             // if feature doesn't have a fid, destroy it
    26             if(feature.fid == undefined) {
    27                 this.layers[0].destroyFeatures([feature]);
    28             } else {
    29                 feature.state = OpenLayers.State.DELETE;
    30                 this.layers[0].events.triggerEvent("afterfeaturemodified", 
    31                         {feature: feature});
    32                 this.layers[0].drawFeature(feature);
    33             }
    34         }
    35     },
    36     setMap: function(map) {
    37         this.keyboard.setMap(map);
    38         OpenLayers.Control.SelectFeature.prototype.setMap.apply(this, arguments);
    39     },
    40     activate: function() {
    41         return (this.keyboard.activate() &&
    42                 OpenLayers.Control.SelectFeature.prototype.activate.apply(this, arguments));
    43     },
    44     deactivate: function() {
    45         this.keyboard.deactivate();
    46         OpenLayers.Control.SelectFeature.prototype.deactivate.apply(this, arguments);
    47     },
    48     CLASS_NAME: "OpenLayers.Control.DeleteFeature"
    49 });

    效果

     

  • 相关阅读:
    Weekly blog for week 1908
    Weekly blog for week 1907
    Weekly blog for week 1905&1906
    Weekly blog for week 1904
    Write Week 3 Blog beforehand
    Add Week 2 Blog
    First week of a new year
    Andriod-Log
    bat
    学习方法
  • 原文地址:https://www.cnblogs.com/HandyLi/p/7698746.html
Copyright © 2020-2023  润新知