MapXtreme 2004 Web控件回送数据分析

  

在MapXtreme 2004的web应用中,都是通过几个隐藏Input将客户端操作发回服务器端的.这几个Input是: 

隐藏字段名

作用

*****_Image_CurrentToolName

存储当前的用户控件名称: MapInfoWebZoomIn; MapInfoWebPan…

*****_Image_ToolControlParent

存储当前控件的父控件名称:

ToolbarControl1;未定义…

 

*****_Image_PointsData

记录用户操作的屏幕坐标集合

*****_SelLayers

存储选择的层

       ***** 为页面定义的Map控件ID,默认为 MapControl1

 

在以上的字段中,重点是*****_Image_PointsData字段,里面保存的是用户操作所产生的屏幕坐标集合.一般情况下,放大\缩小\平移\框选\圈选产生两个点数据;点选\定位产生一个点数据;测距\多边形选择视操作情况会有多于2个的点数据.数据格式为:

       2,162 92,242 138

此数据格式通过逗号分为两个部分.点个数,屏幕坐标,屏幕坐标,…

通过以下方法可以直接拆解为点集合:

 

ExpandedBlockStart.gif ContractedBlock.gif      Public   Function ExtractPoints() Function ExtractPoints(ByVal dataPoints As StringAs Point()
InBlock.gif        
If (Not dataPoints Is NothingThen
InBlock.gif            
Dim textArray1 As String() = Split(dataPoints, ",")
InBlock.gif            
If (Not textArray1 Is NothingThen
InBlock.gif                
Dim num1 As Integer = CInt(textArray1(0))
InBlock.gif                
Dim points As Point() = New Point(num1 - 1) {}
InBlock.gif                
Dim num2 As Integer = 0
InBlock.gif                
Do While (num2 < num1)
InBlock.gif                    
Dim textArray2 As String() = Split(textArray1(num2 + 1), " ")
InBlock.gif                    points(num2).X 
= CInt(textArray2(0))
InBlock.gif                    points(num2).Y 
= CInt(textArray2(1))
InBlock.gif                    num2 
+= 1
InBlock.gif                
Loop
InBlock.gif               
return points
InBlock.gif            
End If
InBlock.gif        
End If
InBlock.gif       
return nothing
ExpandedBlockEnd.gif    
End Function

拆解出来的点集合是屏幕坐标,通过以下方法可以转化为地理坐标,以便后续使用:



None.gif          Dim  map  as  MapInfo.Engine.Session.Current.MapFactory(_Alias)
None.gif        
Dim  inputPoints()  As  System.Drawing.Point   =   ExtractPoints(dataPoints     
            Dim  exportPoints()  As  MapInfo.Geometry.DPoint
None.gif
None.gif        map.DisplayTransform.FromDisplay(inputPoints, exportPoints)

_Alias            地图别名,Mapcontrol的mapAlias属性值.
dataPoints     客户端发回的数据


假如开发者对MapX现有的那几个控件不满意,可以通过模拟以上数据格式来自行设计交互的方式.比如:双击放大,右键选中等.当然这样的方法不太正规.还是编写自己的服务器端控件好一点.不过在编写之前了解一些基础知识还是比较好的.

转载于:https://www.cnblogs.com/redfire0922/archive/2006/07/12/448921.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值