【原创】随鼠标移动显示地图经纬度

思路是在地图的Extent的改变的时候,将Extent的XMin,YMin,Width,Height的值传到客户端,客户端调再根据这几个值经过换算得到当前点的经纬度。这样只有在Extent改变是才与服务器交互,经纬度的获取都是在客户端计算所得。

1.为Map控件添加鼠标滑动的客户端事件

None.gif Map1.Attributes.Add( " onmousemove " " GetPosition(event) " );

2.在Map的ExtentChanged事件中将相应的值传到客户端

None.gif protected   void  Map1_ExtentChanged( object  sender, ESRI.ArcGIS.ADF.Web.UI.WebControls.ExtentEventArgs args)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifString script;
InBlock.gifscript 
= "lat=" + args.NewExtent.YMin.ToString() + ";lon=" + args.NewExtent.XMin.ToString() + ";latWidth="+args.NewExtent.Width.ToString()+";lonHeight="+args.NewExtent.Height.ToString()+";";
InBlock.gif
InBlock.gifESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult s 
= new ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult(nullnull"javascript", script);
InBlock.gifMap1.CallbackResults.Add(s);
ExpandedBlockEnd.gif}

3.添加客户端处理事件

None.gif var lon = ' 0.00 ' ; // 经度
None.gif
var lat = ' 0.00 ' ; // 纬度
None.gif
var lonHeight = ' 0.00 ' // 高度
None.gif
var latWidth = ' 0.00 ' // 宽度
None.gif
// ------------------------------------
None.gif
function GetPosition(evt)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gifevt
=(evt)?evt:window.event;
InBlock.gifvar map
=document.getElementById('Map1');
InBlock.gifvar mapx
=getLeft(map);
InBlock.gifvar mapy
=getTop(map);
InBlock.gif
InBlock.gif
InBlock.gifvar maph
=map.clientHeight;
InBlock.gifvar mapw
=map.clientWidth;
InBlock.gifvar mapleftbottom
=maph+mapy;
InBlock.gif
InBlock.gifvar posi
=document.getElementById('position');
InBlock.gifvar evtx
=(evt.x)?evt.x:evt.pageX;
InBlock.gifvar evty
=(evt.y)?evt.y:evt.pageY;
InBlock.gif
InBlock.gifvar y
=parseFloat(lat); //纬度
InBlock.gif
var x=parseFloat(lon); //经度
InBlock.gif
var height=parseFloat(lonHeight);
InBlock.gifvar width
=parseFloat(latWidth);
InBlock.gif
InBlock.gifvar ratex
=(evtx-mapx)/mapw;
InBlock.gifvar ratey
=(mapleftbottom-evty)/maph;
InBlock.gif
InBlock.gifvar templon
=Math.round((width*ratex+x)*100)/100;
InBlock.gifvar templat
=Math.round((height*ratey+y)*100)/100;
InBlock.gifposi.innerHTML
='经度:'+templon+' '+'纬度:'+templat;
ExpandedBlockEnd.gif}

None.gif
// 获取元素的纵坐标
None.gif
        function getTop(e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            var offset
=e.offsetTop;
InBlock.gif            
if(e.offsetParent!=null) offset+=getTop(e.offsetParent);
InBlock.gif            
return offset;
ExpandedBlockEnd.gif        }

None.gif        
// -----------------------------
None.gif        
// 获取元素的横坐标
None.gif
        function getLeft(e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            var offset
=e.offsetLeft;
InBlock.gif            
if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);
InBlock.gif            
return offset;
ExpandedBlockEnd.gif        }


 

转载于:https://www.cnblogs.com/danni5678/archive/2008/05/10/1190900.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值