摘要:
CBD(Component Based Development)的开发方法,就是要以控件作为软件组装的基本单位,而不是以函数、过程、类作为软件组装的基本单位。所以在Winform的GIS开发中,如果仅仅把MapXtreme控件放进窗体,然后在这个窗体上添加所有GIS的操作的代码,那么很快就会发现这个应用程序变得腐朽(corrupt)而不可维护。软件的坏味道(bad smell)来自封装程度不足。胖控件,就是指把大部分的计算工作都交给Map控件来完成,例如专题图的划分范围颜色配置,图元的距离,最短路径等;MapXtreme实现这些功能也许很直接,却未必是最高效的。把计算放在控件外部又如何呢?这就 阅读全文
posted @ 2010-12-30 17:43
carekee
阅读(707)
评论(0)
推荐(0)
摘要:
original link:http://www.cnitblog.com/eastperson/archive/2006/10/17/18055.aspxorigin full text:我在2005上研究了好长时间, 才弄出来个简单的鹰眼,与大家分享,我的设计思路是将后台设置两个map,map1和map2,map1为主地图,map2为鹰眼地图,但是map2没有MapControl,定义一个实现类继承于MapBaseCommand,将map1.Bounds的矩形在map2上转换为System.Drawing.Rectangle,之后将这个Rectangle的左上坐标和width,height 阅读全文
posted @ 2010-12-30 17:42
carekee
阅读(1269)
评论(0)
推荐(1)
摘要:
一直以来Session都是MapXtreme中比较重要的部分。但是这方面的资料却寥寥无几。大概很多人都去用googleMap之类的地图工具了吧。基于此原因结合开发者参考写下这篇文章。ISession 接口的有用信息ISession Interface位于MapInfo.Engine命名空间。实现此接口的是一个内部对象SessionInternal,直接并不能使用此对象,必须用MapInfo.Session.Current 访问。从这里看的话这篇文章主要说的还是MapInfo.Session.Current 。因此以下所用的ISession Interface是指SessionInternal的 阅读全文
posted @ 2010-12-30 17:42
carekee
阅读(601)
评论(0)
推荐(1)
摘要:
1 设置图层可选状态/**////summary///改变层的可选择状态////summary///paramname="selectableStatus"/param///returns/returnspublicboolLayerSelectableStatusUpdate(stringtableAlias,boolselectableStatus){if(mapControl1.Map.Layers[tableAlias]==null)returnfalse;MapInfo.Mapping.LayerHelper.SetSelectable(mapControl1 阅读全文
posted @ 2010-12-30 17:42
carekee
阅读(1461)
评论(0)
推荐(0)
摘要:
前阵做一个项目过程中,需要结合MapInfo进行地方展示开发,积累一点点心得与大家共享以下所有基于MapXtreme 6.6MapInfo提供了足够强大的WinForm地图空间,可以很方便地在VS中拖拉摆放。但如此强大的控件也带来了封闭性太强的问题。现在我们都接触到了大量Web上的地图,比如Google Map,LiveMap等,这些Web地图都具有非常高的交互能力,缩放由鼠标双击或鼠标中键滚动,或者使用缩放工具完成,但换到WinForm上,这些非常好的交互能力全都没有了,变成了一个个冰冷的控件(如下图),需要手动触发才能调用相应功能,这样的功能给用户多大的困扰啊!需要改变一下了:首先在需要使 阅读全文
posted @ 2010-12-30 17:41
carekee
阅读(1861)
评论(1)
推荐(0)
摘要:
上一篇文章介绍了一个简单的地图缩放工具的制作,接下来需要介绍一下地图数据读取及加载的设计。首先,地图上的数据是来自数据库并自动生成的,我在这里并没有采用MapInfo的ADO.NET,而是采用本身系统的查询接口再加上自定义实体来生成地图图元,并插入MapInfo的Session中的临时表中以展示。考虑到程序的扩展性,我将数据获取、图元展示、地图展示等分离开来,尽量做到灵活易懂。数据获取接口,我只定义了一个方法:[代码]这个方法返回List自定义抽象实体,这个List表示多个需要展示的图元集合。所以最重要的是AbstractEntity了。在该抽象实体中,我定义了两个属性X和Y,用来表示图元 阅读全文
posted @ 2010-12-30 17:40
carekee
阅读(762)
评论(0)
推荐(0)
摘要:
多个窗体(MDI)同时展示,并相互操作这并不困难,小弟在这介绍一下由MapInfo中MapControl组成的多窗体关联处理。首先看看效果:以上多关联地图窗体实现了:在同一个窗体中加载多个(最多4个)地图,地图的拖拽、缩放操作可相互关联,每个地图上各个数据都可以完全不相同!现在我来说一下实现过程:首先要在同一个窗体中加载多个地图,我采用了UserControl来做:public partial class ViewMap :System.Windows.Forms.UserControl在这个ViewMap控件中,我把地图控件所需要的所有东西(包括加载数据的方法、展示图元的方法等)都封装其中。 阅读全文
posted @ 2010-12-30 17:40
carekee
阅读(551)
评论(0)
推荐(1)
摘要:
现在WebGIS已经很火热了,仿三维的WebGIS也雨后春笋地冒出来,广州本土测绘企业http://www.o.cn/更是热得不得了,广州地铁里都是用了他们的地图,知名度飙升不少。用MapXtheme进行开发,能否实现类似的功能呢?答案是可以的,不过最基础的,还是要借助http://www.o.cn/的地图来实现。在GIS领域里,有一个重要的概念“栅格”,意思就是把地图映射为矩阵,有点像常见的BMP图像,路径、多边形、图元等,都在矩阵中用像素来描述。MapInfo除了支持打开TAB表里的数据外,也支持栅格图层,那么如果把航拍图片或纸质地图扫描文件当作栅格图像作为图层插入MapInfo中是否可行 阅读全文
posted @ 2010-12-30 17:39
carekee
阅读(810)
评论(0)
推荐(0)
摘要:
如果想要将一个选中的图元强调显示,用红色醒目的文字显示的话,我的思路如下: 1、不可能直接改原先的图元,所以必须要在一个新的图层上进行操作2、新的图层因为不同的人用,会放置不同的东西,用固定图层不合适,得用动态生成的图层 碰到很多问题,如下: 1、原来的图层,默认设置了autolabel,所以可以直接显示,但是mapxtreme2004并不支持对图层的autolabel的设置。要想在程序中自动标注,必须得依赖labellayer。 2、用固定的设置好autolabel的图层不行,那么能否动态的将一个设置好autolabel属性的固定层复制成一个动态图层呢?我没有找到图层的clone方法。 3、 阅读全文
posted @ 2010-12-30 17:38
carekee
阅读(555)
评论(0)
推荐(0)
摘要:
自从MapInfo把控件从MapX升级到MapXtreme之后,让人郁闷的是测距功能按钮在Win版本中消失了,只有Web版本中还保留着。所以下面的方法就是为了恢复这个必备的功能: 1)为MapTool控件增加一个ToolBarButton // // toolBarButtonDistance // this.toolBarButtonDistance.ImageIndex = 11; this.toolBarButtonDistance.Style =System.Windows.Forms.ToolBarButtonStyle.ToggleButton; this.toolBarButt 阅读全文
posted @ 2010-12-30 17:37
carekee
阅读(450)
评论(0)
推荐(0)
摘要:
鼠标中键缩放地图要用到js,它的实现可以分为三步。第一步,在页面的/form之前添加如下JavaScript代码,(切忌一定要在/form之前)代码 第二步,在后台代码中,如自定义命令的文件CustomCommands.cs中的添加如下类:代码 第三步,在页面注册WheelZoom[代码] 阅读全文
posted @ 2010-12-30 17:09
carekee
阅读(649)
评论(0)
推荐(0)
摘要:
[代码] 阅读全文
posted @ 2010-12-30 17:01
carekee
阅读(1143)
评论(0)
推荐(0)
摘要:
首先在地图容器上添加滚轮事件:onmousewheel="mouseWheelZoomMap()"客户端脚本://鼠标在地图区的滚轮事件function mouseWheelZoomMap(){var zoomValue="";if(window.event.wheelDelta0){zoomValue=0.5;}else{zoomValue=2;}var url = "MapController.ashx?Command=MouseWheelZoomMap&Ran=" + Math.random();var mapImage = document.getElementById("MapCo 阅读全文
posted @ 2010-12-30 17:00
carekee
阅读(1548)
评论(0)
推荐(0)
摘要:
1. GridView控件1.1 在不使用数据源控件时,GridView控件的排序和分页1.2 如何显示空的GridView控件?1.3 GridView的大小溢出1.4 在GridView控件中使用CheckBox控件1.5 绑定自定义页面模板1.6 如何访问页码按钮,并改变其样式?1.7 如何导出GridView到Excel文件?1.8 如何在e-mail信息中发送GridView数据?2. DataList控件2.1 水平地呈现数据2.2 DataList控件的分页3. DetailsView控件3.1 主/详细场景4. 常见问题4.1 如何在数据呈现控件中动态创建列?4.2 连接字符串 阅读全文
posted @ 2010-12-30 13:41
carekee
阅读(520)
评论(0)
推荐(0)
摘要:
重要说明:本内容是由 Microsoft 机器翻译软件而不是人工译者来翻译的。机器翻译的文章并不总是完美的。它可能包含词汇或语法方面的错误,就像一个外国人在用您的语言说话时可能犯的错误。我们使用机器翻译的目的,是希望以您惯用的语言,提供更多的内容。因此,我们非常重视您的反馈意见。如果您对此主题下方的机器翻译文章有任何意见,欢迎您随时提出。。英文原文:http://forums.asp.net/t/1198016.aspx ASP.NET AJAX 的常见问题和解答 1.如何在生产服务器上配置 AJAX? 以下是一些我们需要建立一个 AJAX 的网站上的生产服务器上执行的操作。1。 在服务器上安 阅读全文
posted @ 2010-12-30 13:33
carekee
阅读(327)
评论(0)
推荐(0)
摘要:
如何操作客户端上的 AJAX Timer 控件? 若要应付 Timer 控件客户端上的,我们需要使用这样的 $ Find 方法获取客户端组件的引用: var timer = $find("Timer1");然后,我们可以调用 set_interval 方法来设置计时器控件、 _stopTimer 方法停止它和 _startTimer 方法来启动它的间隔。这里是一个示例: asp:Timer ID="Timer1" runat="server" Interval="3000"/asp:Timerinput id="Button1" type="button" value="Change 阅读全文
posted @ 2010-12-30 13:32
carekee
阅读(486)
评论(0)
推荐(0)
摘要:
由于初始化函数失败,COM+ 激活失败。有关更多信息,请查看事件日志。说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.Runtime.InteropServices.COMException: 由于初始化函数失败,COM+ 激活失败。有关更多信息,请查看事件日志。源错误:执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。堆栈跟踪:[COMException (0x8004e025): 由于初始化函数失败,COM+ 激活失败。有关 阅读全文
posted @ 2010-12-30 10:54
carekee
阅读(755)
评论(1)
推荐(0)