ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:17.95KB ,
资源ID:7763354      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7763354.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Mo在c中的使用.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Mo在c中的使用.docx

1、Mo在c中的使用1. 将MapObject 2.1的控件加入控件TabTools中 选择 COM Components=MapObjects 2.1 Map Control, 加进来后是 AxMapObject2.AxMap控件 2. 加载地图 MapObjects2.MapLayer layer; /图层MapObjects2.GeoDataset gds; / 图层对应的数据MapObjects2.DataConnection m_db = new MapObjects2.DataConnection(); / 图层集连接 / 打开 图层集连接:设置 .shp 文件所在的目录路径m_db.

2、Database = IconApplication.Instance.GetMapPath(); m_db.Connect(); / 查找图层:sample1.shp 地图(如果没有找到,则为空)gds = m_db.FindGeoDataset(sample1); / 将图层加载到 AxMapObject2.AxMap 控件中 = axMap1layer = new MapObjects2.MapLayer();layer.GeoDataset = gds; layer.Symbol.Color = ConvertColorToMapSymbolColor(Color.Red); / la

3、yer中的颜色与C#定义不同,使用了自定义的方法转换layer.Symbol.Size = 1; / 图层线宽 或 点的粗细度layer.Visible = true; / 图层是否可视axMap1.Layers.Add(layer); / 这个方法实际上是 Insert(0, layer),所以后面加载的地图在图层中的下标更小,显示级别更高(同区域,会由更高的级别覆盖低级别的图元) / 自定义转换颜色方法private UInt32 ConvertColorToMapSymbolColor(Color color)return Convert.ToUInt32(color.R + color

4、.G * 256 + color.B * 256 * 256); 3. 各种操作 a. 放大 / 设置当前操作的图标/ (是为了后面 MouseDownEvent 事件区分当前操作是放大、缩小、平移、选择等。/ 可以不设置,用其他变量记录也可以,主要是让操作人容易看清当前的操作状态)axMap1.MousePointer = MapObjects2.MousePointerConstants.moZoomIn; private void axMap1_MouseDownEvent(object sender, AxMapObjects2._DMapEvents_MouseDownEvent e

5、)switch (axMap1.MousePointer)case MapObjects2.MousePointerConstants.moZoomIn:/ 选择放大到的区域MapObjects2.Rectangle rect = axMap1.TrackRectangle(); if (rect = null | rect.Width 0.00005 | rect.Height 0.00005)/ 如果选择区域很小,可以认为是 单击、点选。就在当前范围下,放大 1.5 倍 ( 1/1.5 = 0.6667 )rect = axMap1.Extent;rect.ScaleRectangle(0

6、.6667); / 当选择的区域设置为 当前显示区域axMap1.Extent = rect; break;case . b. 缩小 缩小与放大相似 axMap1.MousePointer = MapObjects2.MousePointerConstants.moZoomOut; private void axMap1_MouseDownEvent(object sender, AxMapObjects2._DMapEvents_MouseDownEvent e)switch (axMap1.MousePointer) case . case MapObjects2.MousePointer

7、Constants.moZoomOut: MapObjects2.Rectangle rect = axMap1.TrackRectangle();if (rect = null | rect.Width 0.00005 | rect.Height selectRecs MapObjects2.Recordset selectRecs; / 根据不同的图层类型(点、线、面),有不同的查找方式 switch (layer.shapeType) case MapObjects2.ShapeTypeConstants.moShapeTypePoint: case MapObjects2.ShapeT

8、ypeConstants.moShapeTypePolygon: selectRecs = layer.SearchShape(trackRect, MapObjects2.SearchMethodConstants.moAreaIntersect, string.Empty); break; case MapObjects2.ShapeTypeConstants.moShapeTypeLine: default: selectRecs = layer.SearchByDistance(trackRect, axMap1.ToMapDistance(1.5F), string.Empty);

9、break; break; e. 获取图层属性字段列表 MapObjects2.TableDesc tableDesc;tableDesc = layer.Records.TableDesc;for (short k = 0; k tableDesc.FieldCount; k+) fieldname = tableDesc.get_FieldName(k); e. 通过图层属性数据查找数据 string expression;field = layer.Records.Fields.Item( );switch (field.Type) case MapObjects2.FieldTypeC

10、onstants.moLong: case MapObjects2.FieldTypeConstants.moDouble: expression = string.Format(0=1, , ); break; case MapObjects2.FieldTypeConstants.moString: expression = string.Format(0=1, , ); break; default: expression = string.Empty; break; if (expression = string.Empty) continue; MapObjects2.Records

11、et recs = layer.SearchExpression(expression); f. 高亮显示选择的图元 private void highlightLayerRecordset(string fieldName, MapObjects2.MapLayer layer, MapObjects2.Recordset selectRecs, int layerIndex) / MapObjects2.GroupRenderer 是定义一组颜色相同的图元列表。同一个图层允许有多个颜色显示定义组。 / 这里是利用 GroupRenderer 定义一组高亮显示的图元列表 MapObjects

12、2.GroupRenderer gRen = (MapObjects2.GroupRenderer)layer.Renderer; MapObjects2.GroupRenderer renColor; if( gRen = null ) gRen = new MapObjects2.GroupRenderer(); gRen.DrawBackground = true; layer.Renderer = gRen; if( gRen.Count = 0 ) renColor = new MapObjects2.GroupRenderer(); gRen.Add(renColor); else

13、 renColor = (MapObjects2.GroupRenderer)gRen.get_Renderer(0); / 先清除原来选择的图元的选择颜色 for (short i = Convert.ToInt16(renColor.Count - 1); i = 0; i-) renColor.Remove(i); object v; int selectCount = selectRecs.Count; / 有时候 MapObjects2.Recordset 对象的 Count 的值是 -1,但实际上有数据 if (selectCount 0) renColor.Add(vmRen);

14、 axMap1.RefreshLayer(Convert.ToInt16(layerIndex); h. 闪烁图元3秒/ / 闪烁图元3 秒/ / 图元列表/ 是否自动将 图元的区域 移到 中心区域位置 显示private void FlashShape(MapObjects2.MapLayer layer, ArrayList symbols, bool toCenter) MapObjects2.Rectangle shapeExtent = null; object shape = null; shape = symbols0; switch (layer.shapeType) case

15、 MapObjects2.ShapeTypeConstants.moShapeTypePolygon: #region / 将面型(多边形)图元 合并为 一个面型图元 MapObjects2.Polygon p; p = shape as MapObjects2.Polygon; for (int i = 1; i symbols.Count; i+) p = p.Union(symbolsi, axMap1.FullExtent) as MapObjects2.Polygon; shape = p; / 得到合并后的新图元的区域,是为了后面将当前新图元居中显示用 shapeExtent =

16、p.Extent; break; #endregion case MapObjects2.ShapeTypeConstants.moShapeTypeLine: #region / 合并线性图元 MapObjects2.Line L; L = shape as MapObjects2.Line; for (int i = 1; i factorY) ? factorX : factorY; if (factor 0) rectExtent.ScaleRectangle(factor); / 居中 double deltaX, deltaY; deltaX = (shapeExtent.Center.X) - (rectExtent.Center.X); deltaY = (shapeExtent.Center.Y) - (rectExtent.Center.Y); if (rectExtent.IsPointIn(shapeExtent.Center) = false) rectExtent.Offset(deltaX, deltaY); axMap1.Extent = rectExtent; axMap1.Refresh(); / 合并的图元闪烁3 秒 axMap1.FlashShape(shape, 3);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1