mapxtreme2008 asp.net画线问题,无法显示,高分求教!

phper2008 2010-04-18 09:28:23
简单的两点间画一直线,跟踪了程序没有报错,临时表也成功创建,图层也添加到地图的Layers里了,
可是无论如何直线在地图上不显示!
有谁遇到过,不晓得如何解决了!请高人赐教!


画线主程序:

try
{
MapInfo.Mapping.Map myMap = GetMapObj();//获得地图
if (myMap == null)
{
return;
}
//获得地图坐标系
CoordSys coordSys = myMap.GetDisplayCoordSys();
//创建临时表
MapInfo.Data.Table temptable = mapXCreateTable(coordSys, "temptable", "clgj");
//四个文本框存2个坐标点的x、y值
if (TextBox1.Text == "" || TextBox2.Text == "" || TextBox3.Text == "" || TextBox4.Text == "") return;
MapInfo.Geometry.DPoint dpStart = new MapInfo.Geometry.DPoint(Convert.ToDouble(TextBox1.Text), Convert.ToDouble(TextBox2.Text));
MapInfo.Geometry.DPoint dpEnd = new MapInfo.Geometry.DPoint(Convert.ToDouble(TextBox3.Text), Convert.ToDouble(TextBox4.Text));

MapInfo.Geometry.MultiCurve mc = MapInfo.Geometry.MultiCurve.CreateLine(coordSys, dpStart, dpEnd);
Color color = System.Drawing.Color.Red;
MapInfo.Styles.SimpleLineStyle bl = new MapInfo.Styles.SimpleLineStyle(new MapInfo.Styles.LineWidth(12, MapInfo.Styles.LineWidthUnit.Pixel), 1, color);
MapInfo.Styles.CompositeStyle cs = new MapInfo.Styles.CompositeStyle(null, bl, null, null);
mapXTableAddRow(temptable, mc, cs, "clgj", "车辆轨迹");//向临时表增加一行数据
FeatureLayer lyr = new FeatureLayer(temptable);
myMap.Layers.Insert(0, lyr);
}
catch (System.Exception ex)
{
//处理
}


创建临时表部分:

private MapInfo.Data.Table mapXCreateTable(MapInfo.Geometry.CoordSys pCoordSys, string pTabName, string pColumnName)
{
if (MapInfo.Engine.Session.Current.MapFactory.Count == 0) return null;
MapInfo.Data.Catalog Cat = MapInfo.Engine.Session.Current.Catalog;
MapInfo.Data.Table tblTemp = Cat.GetTable(pTabName);
if (tblTemp != null) Cat.CloseTable(pTabName);
MapInfo.Data.TableInfoMemTable imt = new MapInfo.Data.TableInfoMemTable(pTabName);
imt.Columns.Add(MapInfo.Data.ColumnFactory.CreateFeatureGeometryColumn(pCoordSys));
imt.Columns.Add(MapInfo.Data.ColumnFactory.CreateStyleColumn());
imt.Columns.Add(MapInfo.Data.ColumnFactory.CreateStringColumn(pColumnName, 40));
return Cat.CreateTable(imt);
}


向表中增加数据:

/// <summary>
/// 向临时表里增加一行数据
/// </summary>
/// <param name="pTable">临时表</param>
/// <param name="pGeometry">地理图元</param>
/// <param name="pStyle">图元样式</param>
/// <param name="pColumnName">自定义字段名</param>
/// <param name="pColumnValue">自定义字段值</param>
private void mapXTableAddRow(MapInfo.Data.Table pTable, MapInfo.Geometry.FeatureGeometry pGeometry, MapInfo.Styles.Style pStyle, string pColumnName, string pColumnValue)
{
MapInfo.Data.Feature f = new MapInfo.Data.Feature(pTable.TableInfo.Columns);
f.Geometry = pGeometry;
f.Style = pStyle;
f[pColumnName] = pColumnValue;
pTable.InsertFeature(f);
}

...全文
252 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wosizy 2010-04-19
  • 打赏
  • 举报
回复
map.featurefactory.createline() 估计是那些参数代错了
去看下 VB 写的一个 能显示
http://www.gis-mapinfo.cn/post/18870.html
zsuswy 2010-04-19
  • 打赏
  • 举报
回复
1、首先,确定下你的文本框里面输入的经纬度,是不是在你当前的地图范围里。
2、myMap.Layers.Insert(0, lyr)之后,这个层本身是不是显示出来了?

最后,在客户端浏览器里面,看一下地图的容器控件(就是放地图的html控件,一般是个div吧)的innerHTML的内容,看下画的线的是不是在里面。 在浏览器地址栏里面敲 javascript:alert(document.getElementById("容器控件ID").innerHTML) 或者用其它的调试工具。
doo1314 2010-04-18
  • 打赏
  • 举报
回复
xuexixuexi
phper2008 2010-04-18
  • 打赏
  • 举报
回复
素质啊,还有来打广告的!
就别挖苦我,我折腾几天了,头都大了!
wk417301568 2010-04-18
  • 打赏
  • 举报
回复
phper2008 2010-04-18
  • 打赏
  • 举报
回复
大哥,我是要在地图上动态画线,用程序自动画2个点,不是开发一个画线工具,
画车辆轨迹是由后台实现的!

请问 我上面的方法一样是先添加临时表,然后将临时表形成的图层加到地图图层中!
其实跟博客里写的也差不多,只是没有注册到客户端就是!

为什么线显示不不出来呢?
wuyq11 2010-04-18
  • 打赏
  • 举报
回复
看看相关文档
画线
xuyuanyuan717818 2010-04-18
  • 打赏
  • 举报
回复
YYYYYY

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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