文档详情

课自定义点查询的实现.PPT

发布:2017-04-04约字共40页下载文档
文本预览下载声明
自定义点查询的实现 2013年10月 主要内容 自定义工具的使用 自定义点查询的实现 自定义工具的使用 ToolBar控件: BuddyControls属性 ToolbarItems集合 ToolbarItems: Tool Appearances:外观 ClientAction:响应事件类型 ServerActionAssembly:指定响应类所在的命名空间 ServerActionClass:指定响应类 自定义工具响应类的要求 继承IMapServerToolAction接口及实现其ServerAction方法。 Class 响应类:IMapServerToolAction { IMapServerToolAction. ServerAction(ToolEventArgs args) { } } 自定义点查询的实现 设定Toolbar控件中的自定义命令,指定其外观、响应类及响应类所在命名空间。 设计响应类,实现IMapServerToolAction接口及实现其ServerAction方法,在其中(函数)完成自定义点查询的编程结构,编写相应的辅助程序。 ServerAction方法中的主要步骤 得到地图控件的引用 得到用户单击的位置点 将屏幕点像素坐标转换到地图点坐标 利用该点查询要素 判断该资源是否支持功能,并支持查询功能 如果同时支持,则得到查询对象后调用Identify方法执行查询 把所获取的查询对象信息以网页形式展现出来结果 在地图上高亮度显示所查询到要素 编程实现 在项目中创建一个App_Code文件夹 在其中添加两个类IdentifyPoint和 IdentifyHelper 一个网页文件identifyResult.htm。 其中,IdentifyPoint是点查询的响应类,用于完成点查询的步骤,IdentifyHelper用于辅助支持,用于将查询得到的属性表传送一个网页实现。 在响应类IdentifyPoint中 实现IMapActionTool接口的ServerAction方法 Class 响应类:IMapServerToolAction { IMapServerToolAction. ServerAction(ToolEventArgs args) { …… } } //从方法的参数中得到地图控件的引用 Map map = args.Control as Map; //从方法的参数中得到用户单击的位置点 PointEventArgs pea = (PointEventArgs)args; System.Drawing.Point screen_point = pea.ScreenPoint; //将屏幕像素坐标转换到地图坐标 Point point = Point.ToMapPoint(screen_point.X, screen_point.Y, map.Extent, (int)map.Width.Value, (int)map.Height.Value); //利用该点查询要素 IGISFunctionality gisfunc = map.GetFunctionality(NorthAmericaMap); IdentifyPoint具体实现 //判断该目标对象是否可查询——先判断资源是否有功能 IGISFunctionality gisfunc = map.GetFunctionality(Map1); if (gisfunc == null) return; //如果资源有功能,判断是否支持查询 IGISResource gisresource = gisfunc.Resource; bool supportquery = gisresource.SupportsFunctionality(typeof(IQueryFunctionality)); if (!supportquery) return; IdentifyPoint具体实现 若能查询,则调用资源对象的CreateFunctionality方法,得到查询功能对象。若判断能否查询,若不能,则返回;若能,则调用资源对象的CreateFunctionality方法,得到查询功能对象。 IQueryFunctionality qfunc; qfunc = gisresource.CreateFunctionality(typeof(IQueryFunctionality), null) as IQueryFunctionality; IdentifyPoint
显示全部
相似文档