物探论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 541|回复: 0

MapXtreme2004的Web选择控件

[复制链接]
发表于 2013-3-13 21:02:44 | 显示全部楼层 |阅读模式
Web控件在MapXtreme里面所占的分量很少,很多的功能都没有。与Google Map相比而言,MapXtreme2004的WebGIS真的很过时了。但是项目不可能说变就变,该用什么就还得用什么。听说MapXtreme2005有很大的改观,我得找机会研究研究。
       在MapXtreme2004里面的选择控件有一个可能是bug的现象:控件的选择事件(SelectChanged)会多次被触发,并且触发后传入对象的值还不一定相同。随着不断在地图上操作,触发的次数会不断增多。
       不知道用过MapXtreme2004的同行有没有遇到这样的问题,有没有什么解决的办法。
       我们还是先看一下他的结构:
mapInfoMapTool.jpg

ToolControl.jpg

       跟用户操作有关的控件有两个分支:MapTool(MapInfoMapTool继承自MapTool)和ToolControl。MapTool分支封装了跟地图操作相关的功能。ToolControl继承自System.Web.UI.WebControls.WebControl,实现了控件设计时、客户端脚本等。应该说ToolControl分支是MapTool分支和Asp.net的桥梁。
MapTool Class
包含业务逻辑的控件的抽象类,所有的MapInfo工具都起源于它并实现了其中的业务逻辑。包括自定义工具也应该继承它。
其中比较关键的两个函数:Execute            包含制定的业务逻辑,每个工具都是通过此函数实现功能的。
                                          ExtractPoints         从字符串中析取点集合

MapInfoMapTool Class
继承自MapTool,包含了MapXtreme特殊工具的一些公共的功能特性。关键点是多了一个 MapToolAction的事件。
ZooOutMapTool、DistanceMapTool、ZoomInMapTool、CenterMapTool、InfoMapTool、PanMapTool
继承自MapInfoMapTool,分别实现缩小、测距、放大、定位、点信息、平移功能。关键点是根据不同的功能实现了Execute方法,并触发MapToolAction事件。
MapInfoSelectionMapTool Class
也继承自MapInfoMapTool,包含了所有选择控件的公共特性。关键点是多了一个SelectionChanged事件。
文章开头描述的问题就出在这个SelectionChanged事件上。因为这个SelectionChanged事件实际是用Session.Current.Selections.DefaultSelection.SelectionChangedEvent += SelectionChangedEventHandler;进行绑定的。当它与ToolControl结合时需要将SelectionChanged事件与开发者的SelectionChangedEventHandler绑定。随着页面的刷新,此绑定会在每次刷新时被执行。但是Session.Current.Selections.DefaultSelection.SelectionChangedEvent是被服务器保存了的,多次执行必然使得事件绑定了多个相同函数。这应该就是为什么只有选择控件会不断增加触发事件次数的原因吧。至于为什么每次触发传入的对象的值不同,我想应该是Session.Current.Selections.DefaultSelection.SelectionChangedEvent本身会有几次触发。这个有待研究中。
RadiusSelectionMapTool、PolygonSelectionMapTool、RectangleSelectionTool、PointSelectionMapTool
继承自MapInfoSelectionMapTool,分别实现圆形、多边形、矩形、点选择功能。关键点是根据不同的功能实现了Execute方法,并触发MapToolAction事件。注意这些功能并不会触发SelectionChanged事件。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|物探论坛 ( 鄂ICP备12002012号 微信号:iwutan )

GMT+8, 2024-5-13 10:56 , Processed in 0.077769 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表