仿51地图的测面积(前台部分)用JQuery + dwr + vml

本文介绍如何利用JavaScript在网页上实现绘制区域并获取该区域的面积功能,包括使用事件监听器处理鼠标操作,创建VBA形状进行绘图,并在双击事件中计算和显示距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function drawarea(){
 if(state=="area"){
  var mParamX = "";
  var mParamY = "";
  var mWorkArea=false;
  var mOldValue="";
  var mPoly=null;
  var mOldX=0;
  var mOldY=0;
  var xx,yy;
  var mParentDiv = $("<div></div>")
  mParentDiv.appendTo("#imgmap");
  $("#imgmap").bind("mousedown", function (){
   if(!mWorkArea){
    xx=event.x;
    yy=event.y;
    mParamX =  xx;
    mParamY =  yy;
    mPoly = $("<v:shape></v:shape>").attr({'path' : 'm0,0 l0,0',
                'filled' : 'true',
                'strokecolor' : 'red',
                'strokeweight': '2',
                'coordsize' : '100,100',
                'fillcolor' : 'yellow'})
            .css({'position':'absolute',
               'z-index':'1',
               'left' : xx,
               'top' : yy,
               'width' : '100',
               'height': '100',
               'filter': 'Alpha(Opacity=50)'});
    mPoly.appendTo(mParentDiv);
    mOldValue = (mPoly.attr("path")+"").replace("e","");
    mOldX=xx;
    mOldY=yy;
    mWorkArea=true;
   }else{
    mParamX = mParamX + "|" + event.x;
    mParamY = mParamY + "|" + event.y;
    if (mPoly!=null) mOldValue=(mPoly.attr("path")+"").replace(" e","");
   }
  });
  $("#imgmap").bind("mousemove", function(){
   var tempx=event.x;
   var tempy=event.y;
   if (mPoly!=null){
    mPoly.attr("path", mOldValue+","+(tempx-mOldX)+","+(tempy-mOldY));
    mPoly.attr("path", (mPoly.attr("path")+"").replace(",0,0,",",0,").replace(",0 e","e"));
   }
  });
  $("#imgmap").bind("dblclick", function(){
   var x = event.x;
   var y = event.y;
    loadDwr.getArea(mParamX, mParamY,{callback:function(data){
     $("<sup>2</sup>").appendTo(
      $("<div></div>").css({'top' : y,
              'left': x,
              'position': 'absolute',
              'border': '#adaeac 1px solid',
              'background-color': '#fbfbd9'})
           .html(data+" km")
           .appendTo(mParentDiv)
        );
    }});
    $("<img>").css({'top':y,
       'left':x-10,
       'cursor': 'pointer',
       'position': 'absolute'})
      .attr("src","./51/del.gif")
      .attr("title", "清除本次测距")
      .bind("click",function(){
       $(this).parent().remove();
      })
      .appendTo(mParentDiv);
    mPoly.attr("path", mOldValue+"x e");
    mWorkArea=false;
    mPoly=null;
    $("#imgmap").unbind("mousedown");
    $("#imgmap").unbind("mousemove");
    $("#imgmap").unbind("dblclick");
    resetimg();
    state = "";
  });
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值