Mapxtreme 2005 添加点?

buptxf 2008-09-23 03:35:43
我在网上找到了一些在地图上添加点的代码。把他们放在单线程程序下运行正常,能看见添加的点。可是如果另起一个线程就看不见新加的点,不知道为啥?下面是添加点的程序:
public void CreateTempLayer()
{
MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[MainMap.MapAlias];

//指定表名建立表信息
MapInfo.Data.TableInfoMemTable tblInfoTemp = new MapInfo.Data.TableInfoMemTable(tempLayerTableName);

//确保当前目录下不存在同名表
MapInfo.Data.Table tblTemp = MapInfo.Engine.Session.Current.Catalog.GetTable(tempLayerTableName);
if (tblTemp != null)
{
MapInfo.Engine.Session.Current.Catalog.CloseTable(tempLayerTableName);
}

//向表信息中添加可绘图列
tblInfoTemp.Columns.Add(MapInfo.Data.ColumnFactory.CreateFeatureGeometryColumn(myMap.GetDisplayCoordSys()));
tblInfoTemp.Columns.Add(MapInfo.Data.ColumnFactory.CreateStyleColumn());

//向表信息中添加自定义列
tblInfoTemp.Columns.Add(MapInfo.Data.ColumnFactory.CreateIntColumn("index"));
tblInfoTemp.Columns.Add(MapInfo.Data.ColumnFactory.CreateStringColumn("name", 10));

//根据表信息创建临时表
tblTemp = MapInfo.Engine.Session.Current.Catalog.CreateTable(tblInfoTemp);

//指定表,图层名和图层别名创建临时图层
FeatureLayer tempLayer = new FeatureLayer(tblTemp, tempLayerName, tempLayerName);
myMap.Layers.Add(tempLayer);
}



public void AddPointToLayer()
{
CreateTempLayer();
//dPoint.x = 116.346864;
//dPoint.y = 39.940982;

dPoint.x = 116.210368;
dPoint.y = 39.576692;

//dPoint.x = 234.09959;
//dPoint.y = 23.976621;

MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[MainMap.MapAlias];

//获取图层和表
FeatureLayer workLayer = (MapInfo.Mapping.FeatureLayer)myMap.Layers[tempLayerName];
MapInfo.Data.Table tblTemp = MapInfo.Engine.Session.Current.Catalog.GetTable(tempLayerTableName);

//创建点图元及其样式
FeatureGeometry pgPoint = new MapInfo.Geometry.Point(workLayer.CoordSys, dPoint);
MapInfo.Styles.SimpleVectorPointStyle spsPoint = new MapInfo.Styles.SimpleVectorPointStyle(37, System.Drawing.Color.Green, 20);
MapInfo.Styles.CompositeStyle csPoint = new MapInfo.Styles.CompositeStyle(spsPoint);
MapInfo.Data.Feature ptPoint = new MapInfo.Data.Feature(tblTemp.TableInfo.Columns);
ptPoint.Geometry = pgPoint;
ptPoint.Style = csPoint;

//将点图元加入图层
workLayer.Table.InsertFeature(ptPoint);


}

我如果这样调用:
AddPoint add = new AddPoint(MainMap);
add.AddPointToLayer();
就没有问题
但如果这样,就看不见新加的点
AddPoint add = new AddPoint(MainMap);
Thread t = new Thread(add.AddPointToLayer);
t.Start();
...全文
188 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
td8777 2011-01-05
  • 打赏
  • 举报
回复
MainMap是指你当前用的mapControl,写成这样可能更好理解:

MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[mapControl1.Map.Alias];
gaochunchao 2010-10-11
  • 打赏
  • 举报
回复
MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[MainMap.MapAlias];
我想请教一下,上面那就代码中MainMap是MapControl控件属性么,在form窗体设计中能用么?为什么我找不到这个属性呢?
buptxf 2008-09-23
  • 打赏
  • 举报
回复
问题已经解决
MapInfo.Engine.Session.Dispose();
这个是前面一个的加强版 40-50个相关代码 和大家一起学习 2. 使某图层可选或不可选 3 3. 使用checkboxes控制图层可见性 3 4. 把当前窗口地图保存为图片 3 5. 设置地图视图功能的范围选定 4 6. 创建从一个Microsoft Access表的填图(还未实现) 4 7. 建立一个线缓冲区,并加载到地图中(还未实现) 5 8. 计算一个多边形内的数目(已完成) 6 9. 把当前的选择工具变为漫游工具 7 10. 改变绘图样式 7 11. 返回选择物信息(已完成) 7 12. 一个简单的路径分析(这个路径分析是使用mapinfo服务器,得付费) 8 13. 把选择的结果填充到datagrid中 9 14. 设置导出图片的格式 9 15. Feature相关程序 10 1. 创建一个feature并加载到地图中 10 2. 插入一个feature 11 3. 向地图中插入一个特殊的feature 11 4. 选择geometry的样式 11 16. 添加一个加载图片的自定义标签工具(已完成) 12 17. 比例尺和标签修饰(已完成) 13 18. 使用专题和图例 13 19. 相对路径加载地图 14 20. SearchInfoFactory类 15 21. 可制图表的一个研究 17 22. 两种方法实现动态轨迹 19 23. 运动轨迹的代码(桌面程序用) 22 24. MapXtreme中桌面信息工具(InfoTool)的简单实现 26 25. 在MapXtreme2004 地图中创建一个显示动态小车的图层 27 26. 地图图元的闪烁效果制作 29 27. 根据名称搜索图元,高亮显示,显示信息 30 28. 画线轨迹 31 29. 多画一线 31 30. 改变线或区域的样式 32 31. 显示多边形 32 32. 添加图元 32 33. 控制显示比例 33 34. 显示多行InfoTips 33 35. 取得选择图元的ID列表 35 36. 用程序选择指定层中符合条件的图元 36 37. 瘦控件的专题图制作 37 38. 一个选中的图元强调显示,用红色醒目的文字显示 40 39. 在MapXtreme中的标注换行 43 41. 几个报错 43 42. 在C#应用中如何读取存在ORACLE(或SQL Server)中的MapInfo表 45 43. 读取线的节坐标程序 47 44. 常用示例 48 1 设置图层可选状态 48 2 设置层的可用状态 48 3 层居中,看全图 49 4 放大缩小地图 50 5 移动层的顺序 mapControl1.Map.Layers.Move(index1,index2); 51 6 图元/图层透明 51 7 选择全部图元 53 10 计算缩放比例 57

2,142

社区成员

发帖
与我相关
我的任务
社区描述
它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。
社区管理员
  • 地理信息系统
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧