在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

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

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

 

End Function

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



MapXtreme 2004 Web控件回送数据分析        Dim map as MapInfo.Engine.Session.Current.MapFactory(_Alias)
MapXtreme 2004 Web控件回送数据分析        
Dim inputPoints() As System.Drawing.Point   =   ExtractPoints(dataPoints     
            Dim exportPoints() As MapInfo.Geometry.DPoint
MapXtreme 2004 Web控件回送数据分析
MapXtreme 2004 Web控件回送数据分析        map.DisplayTransform.FromDisplay(inputPoints, exportPoints)

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


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

相关文章:

  • 2021-06-04
  • 2021-04-04
  • 2021-04-10
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
  • 2021-07-14
猜你喜欢
  • 2021-08-06
  • 2021-10-11
  • 2021-06-07
  • 2022-12-23
  • 2021-09-19
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案