在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
此数据格式通过逗号分为两个部分.点个数,屏幕坐标,屏幕坐标,…
通过以下方法可以直接拆解为点集合:
拆解出来的点集合是屏幕坐标,通过以下方法可以转化为地理坐标,以便后续使用:
Dim exportPoints() As MapInfo.Geometry.DPoint
_Alias 地图别名,Mapcontrol的mapAlias属性值.
dataPoints 客户端发回的数据
假如开发者对MapX现有的那几个控件不满意,可以通过模拟以上数据格式来自行设计交互的方式.比如:双击放大,右键选中等.当然这样的方法不太正规.还是编写自己的服务器端控件好一点.不过在编写之前了解一些基础知识还是比较好的.