《二次开发常见问题解决方法.docx》由会员分享,可在线阅读,更多相关《二次开发常见问题解决方法.docx(8页珍藏版)》请在三一办公上搜索。
1、二次开发常见问题1、启动IMS服务后日志里面空间分析服务报错或空间分析无法使用原因一:IMS服务管理器中数据库配置问题空间分析要用到两个临时数据库,一个是SpatialAnalylMS,要存储到商用 数据库中;一个是IMSWEBGISGDB.HDF,存储到平台下的。(1)确定数据库SpatialAnalyIMS已经附加到SQL数据库中;IMSWEBGISGDB.HDF附加到平台下;(2)如果是SQL2005的数据库,在IMS服务管理器中数据库配置中不要设置 IP,设置数据库所在机器的计算机名称(这个是SQL2005数据库的问题)。原因二:IMS服务管理器中矢量数据服务配置中没有勾选“启动空间分
2、析服务”,勾选后要单击“保存”按钮,重启服务。2、配置网络数据源SQL、ORACLE失败原因:学习版不支持网络数据源解释:要理解MapGIS的数据存储,分为两种,一种是本地数据源,一种是网络 数据源。本地数据源是以本地HDF文件方式存储网络数据源指的就是将空间数据存储在商用数据库里面。一般用本地数据源就行了。3、发布示例站点后,打开站点提示“无法远程连接服务器”原因一:矢量示例数据没有附加到平台中。没有附加请附加数据。原因二:IMS的GIS服务未启动,或不能正常启动。要检查IMS服务发布数据后是否单击“保存”按钮,保存配置并启动服务。4、发布示例站点后,打开站点出现白图原因:如果使用的是IE8
3、,是浏览器兼容问题,更改IE8为兼容模式或者使用火狐等非IE内核的浏览器。5、发布示例站点后,打开站点提示open地图失败解决方法:重新注册下MapGIS K9Program下的regxcom.bat、CheckWebFunction.dll6、使用平台一段时间后,打开平台发现无法使用,任何MapGIS的exe都无法打开原因:可能是Beta版包学习版注册问题1、打开注册表,将 HKEY_CURRENT_USERSoftwareMapGisLCCSYSTEM 下的NO_PROMPT 键值改为 “0”;2、打开平台,会弹出一个注册的对话框,里面有注册码,(注意此时不要关闭该对话框);3、根据该注册
4、码到http: 的学习版注册模块注册,得要一个证书码;4、在之前弹出的对话框中入延长证书码后,再修改NO_PROMPT的键值为“1”,继续使用学习版证书。7、Flex开发中一一出现拖动控件后出错无法编译的情况原因:可能是开源二次开发库附加错了,也就是把SDK下的文件拷贝到Flex工程的src下(注意是SDK目录下所有的文件,不要把SDK目录拷贝过去)。1、发生错误:创建对象失败。解决方法:开始-所有程序-MapGIS7.3二次开发大赛版软件-工具箱-注册组件。2、在VS中添加MapGIS控件,调试运行时弹出对话框“托管调试助手LoaderLock . 导致应用程序挂起。”解决方法:(1)点击停
5、止调试,然后点击“开始执行(不调试)”。(2 ) 在Debug菜单下-Exceptions-Managed Debugging Assistants中勾掉LoaderLock”。3、添加MapGIS控件后,VS中无法显示界面,错误提示“加载设计器时遇到一 个或多个错误。这些错误在下面列出。一些错误可通过重新生成项目来修复, 而另一些错误则需要更改代码”。解决方法:取消所有添加进VS的控件,然后重新加载:工具箱选择项 com组件。并在VS的解决方案资源管理器你的项目名称一一引用下,添加 所用到的MapGIS控件dll。若添加该组件后仍显示黄色感叹号,则该组件未注册, 需在开始运行中输入:regs
6、vr32 “未注册的组件路径.dll”,注册成功后关闭 VS项目,重新打开运行。4、在VS2005中调试程序查看变量值时显示的不是十进制数值,怎 么设置?解决方法:类似这种情况,右击,把16进制显示去掉就可以了。5、在vs2005环境的web编程中,我从HTML的源码视图返回的设计视图之下, 为什么不显示控件,该怎么解觉?解决方法:在“我的电脑”中搜索gdiplus.dll”,发现Dreamweaver,office, qq,flash 8.0,adobe photshop cs2 这些软件都调用了 gdiplus.dll,挑一个最 新版本的(就是把鼠标放在搜索结果的项上,会显示版本号、创建日
7、期,选一个 版本号、创建日期最新的),copy到C:WINDOWSMicrosoft.NETFrameworkv2.0.50727 和 C:ProgramFilesMicrosoft Visual Studio 8Common7Packages 两个目录下,好了之后, 操作如下:“开始一“程序一Microsoft Visual Studio 2005一“Visual Studio Tools-“Visual Studio 2005 命令提示,输入 devenv /ResetSkipPkgs,)。6、 VS中显示,类似无法加载引用“ AxGlSSYMBOLVIEWLib”的类型库。库没有注册。解
8、决方法:首先点开始所有程序MapGIS 7.3二次开发大赛版工具 箱注册组件,重新运行VS,若项目资源管理器中,引用下的类库仍然显示 黄色感叹号,则打开安装目录如:D:MapGIS7.3Program ”,找到“GISSYMBOLVIEWdll”(在Program文件夹中对应时去掉Ax,dll名类似与库名), 并在开始运行,中输入:regsvr32然后将该dll拖入运行对话框,此时自动 显示 regsvr32 D:MapGIS7.3Program GISSYMBOLVIEWdll,确定后再检查引用下 的类库,黄色叹号不存在则正常。7、使用什么控件进行图属联动? RecordGird怎么不可以?
9、解决方法:加载 GisGridCtrl 而不是 RecordGird,使用 GisGridCtrl 的 selchanged 事件即可,操作方法为:联动分两步:第一步:根据鼠标在视图上点击查询得到oid,然后在gisgridctrl中调用SetXClsRcd, gisgridctrl会自动跳转到相应的记录上。voidaxMapXView1_OnLButtonDown(objectsender,AxMapXView._IXViewEvents_OnLButtonDownEvent e)(一一coordinate(e.x, e.y);/坐标转换,参照问题8,将窗口坐标转换为地图坐标mc_basOb
10、j7Lib.mcRect m_Rect = new mc_basObj7Lib.mcRect();/创建矩形区域进行选择,也可创建多边形区域一mc_basXcls7Lib.mcSelectSet m_SelectSet = null;/创建选择集,用于保存选择 到的所有元素一mc_basXcls7Lib.mcFeatureCls m_Fcls = null;/ 创建要素类m_Fcls=(mc_basXcls7Lib.mcFeatureCls)axMxWorkSpace1.ActiveMap.ActiveLayerXClass;m_Rect.xmax = ;/这里仅作为示例,你可以使用框选的办法
11、或者点击时以鼠 标按下的点建立一个小矩形进行单一要素选择m_Rect.xmin =;m_Rect.ymax=;m_Rect.ymin=;m_Fcls.RectSelect(m_Rect, out m_SelectSet, null, 0, 0, 0, 0);/ 要素类选择得到 选择集m_SelectSet.fset.MoveFirst();/ 移动到选择集第一个元素for (int i = 0; i m_SelectSet.fset.GetObjCount() - 1; i+)axGisGrid1.SetXClsRcd(m_Fcls, m_SelectSet.fset.GetObjID();/
12、取到 oidaxMapXView1.AppendFlashItem(m_Fcls,m_SelectSet.fset.GetObjID(),MapXView.meFlashType.meXclsFID);axMapXView1.StartFlash();/ 闪烁m_SelectSet.fset.MoveNext(); 一第二步:在gisgridctrl中响应SelChanged事件,返回ptOID,然后在视图上 AppendFlashItem添加闪烁图元,然后 StartFlash。voidaxGisGrid1_SelChanged(objectsender,AxMC_GISGRIDCTRLLi
13、b._IGisGridEvents_SelChangedEvent e)功能为点击GisGrid,在地图上闪烁图元mc_basXcls7Lib.mcFeatureCls m_Fcls = null;/定义要素类,闪烁时则应加载要素 类图层一m_Fcls=(mc_basXcls7Lib.mcFeatureCls)axMxWorkSpace1.ActiveMap.ActiveLayerXClass;/ 取 当前激活图层的要素类axMapXView1.AppendFlashItem(m_Fcls, (mc_basObj7Lib.mcObjectID)e.ptOID,MapXView.meFlashT
14、ype.meXclsFID);/加 载闪烁项axMapXView1.StartFlash();/ 开始闪烁 8、如何进行坐标转换?重要概念:窗口坐标(Wp):以当前客户区左上角为坐标原点,横向向右为X轴正方向,纵向朝下 为Y轴正方向设备坐标(Dp):以当前客户区左下角为坐标原点,横向向右为X轴正方向,纵向朝上 为Y轴正方向逻辑坐标(Lp):当前地理数据所采用的用户坐标,如北京54,西安80等坐标系地图坐标(Mp):当前地图数据所使用的坐标系!MapXView的坐标为:画布范围的坐标,左上为角为(0,0)例子:获取当前显示地图过程中,鼠标移动时的地图坐标voidaxMapXView1_OnMou
15、seMove(objectsender,AxMapXView._IXViewEvents_OnMouseMoveEvent e)为axMapXView1添加鼠标移动事件int x1 = 0, y1 = 0;double x2 = 0.0, y2 = 0.0;double x3 = 0.0, y3 = 0.0;x1 = e.x;y1 = e.y;mapXBase.IXTransformation cood;/座标转换mapXBase.IXDisplay dsp;axMapXView1.BeginPaint(out dsp);/启动绘制,类似于 VC 绘图时的 GDIcood = dsp.Tran
16、sformation;cood.WpToLp(x1, y1, ref x2, ref y2);/ 窗口坐标坐标转换逻辑坐标 cood.LpToMp(x2, y2, ref x3, ref y3); /逻辑坐标坐标转换地图坐标 toolStripStatusLabel1.Text =坐标:+ x3.ToString() + , + y3ToString(); 9、二次开发常用控件及简要说明:地图视图控件(MapXView):负责所有的基本显示功能,由MapXView取 到IXDisplay接口,IXDisplay接口进行坐标变换,显示要素类等操作等MapXVi ewDataViewLayoutV
17、iXDisplayl今7、Display XTransform at ion工作空间控件(MxWorkSpace):主要用于对数据以及资源进行管理,包 括对包括打开、关闭、新建、保存工作空间文件(*.wks)、连接数据源、 字体文件的载入,卸载、图形信息库文件的载入,卸载、三维场景的加载等编辑控件(MxEditorConnector):提供了对地图的基本的编辑功能的工具, 如要素工具、空间分析工具、网络工具等,这些功能均已经完整封装提供, 只需一句话调用即可实现。所提供的功能函数名称可以在注册表下的以下 键值中查询 HKEY_CURRENT_USERSoftwareMapGisFrameWor
18、k70 grouptool,注册表“项”名称即为 axMxEditControl1.AddGroupTool (参数 1”,参数2)渗数2的名称,具体示例参见MapGIS安装路径SDKDEMOC# 中的示例:编辑助于控件(MxEditAssistCtrl):提供了对选择集的各种操作,如选择集通过属性选择来获取、图元之间地跳转、选择集中数据的操作等编辑视要素|跳制屈性选择|辰箜| 选择对象3口蓍示例:3四注记要素几何点几何线几何区空间点空间弧段国国简单要素点E囹简单要素戏9简单要素区:地图文档树控件(MxDocTreeView):加载地图及图层-未命名文档- 彖新地图 冒倒 CITY. WT倒
19、COUNTRY, h倒 RIVER. WL:拓扑错误列表控件(mxTopoErrorListCtrl):显示拓扑错误的控件,该控件可以把传入的拓扑错误以列表的方式显示出来错误节点I错误弧段1I错误弧段nI错误类型移段段段段段段段 弧弧弧弧弧弧弧 复复壹复复壹交 -a一 二 n 一 Lui -w 一 二 n 一 Lui LLLL怏取断弧段1移动弧段55剪断所有58941735575216225765142057741686578350557855065788509589671362261767属性视图控件(GisGrid):主要是对要素类,简单要素类的属性以及对象类进 行显示,可以和MapXView联动,编辑属性大赛组委会2009-7-29