openlayers地图上要素拖动交互

参考代码:
//拖动交互
function addMoveInteraction(){
	var app = {};
	app.Drag = function() {

        ol.interaction.Pointer.call(this, {
          handleDownEvent: app.Drag.prototype.handleDownEvent,
          handleDragEvent: app.Drag.prototype.handleDragEvent,
          handleMoveEvent: app.Drag.prototype.handleMoveEvent,
          handleUpEvent: app.Drag.prototype.handleUpEvent
        });

        this.coordinate_ = null;

        this.cursor_ = 'pointer';

        this.feature_ = null;

        this.previousCursor_ = undefined;

      };
      ol.inherits(app.Drag, ol.interaction.Pointer);

      app.Drag.prototype.handleDownEvent = function(evt) {
        var map = evt.map;

        var feature = map.forEachFeatureAtPixel(evt.pixel,
            function(feature) {
              return feature;
            });

        if (feature) {
        	 var geom = (feature.getGeometry());
             if (geom instanceof ol.geom.MultiPolygon) {
               return;
             } else if (geom instanceof ol.geom.LineString) {
               return;
             }else{
             	 this.coordinate_ = evt.coordinate;
            // alert(evt.coordinate[0]);
             this.feature_ = feature;
             }
        }
        return !!feature;
      };

      app.Drag.prototype.handleDragEvent = function(evt) {
        var deltaX = evt.coordinate[0] - this.coordinate_[0];
        var deltaY = evt.coordinate[1] - this.coordinate_[1];

        var geometry = this.feature_.getGeometry();
        geometry.translate(deltaX, deltaY);

        this.coordinate_[0] = evt.coordinate[0];
        this.coordinate_[1] = evt.coordinate[1];
      };

      app.Drag.prototype.handleMoveEvent = function(evt) {
      	
        if (this.cursor_) {
          var map = evt.map;
          var feature = map.forEachFeatureAtPixel(evt.pixel,
              function(feature) {
              	//alert("handleMoveEvent");
                return feature;
              });
          var element = evt.map.getTargetElement();
          if (feature) {
            if (element.style.cursor != this.cursor_) {
              this.previousCursor_ = element.style.cursor;
              element.style.cursor = this.cursor_;
            }
          } else if (this.previousCursor_ !== undefined) {
            element.style.cursor = this.previousCursor_;
            this.previousCursor_ = undefined;
          }
        }
      };

      app.Drag.prototype.handleUpEvent = function(evt) {
    	  //拖动以后触发操作
    	var stationnum = this.feature_.U.StationNum;
        this.coordinate_ = null;
        this.feature_ = null;
        //alert("handleUpEvent"+evt.coordinate[1]);
        var laAndLo = excuteExtent(evt);
        
    	stationnumArr.push(stationnum);
    	LoAndLaArr.push(laAndLo);
        //updateLoAnaLa(laAndLo,stationnum);
        
        return false;
      };
      appD = new app.Drag();
      //将交互添加到map中
	map.addInteraction(appD);
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dong__xue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值