标题:新手求- C# 地图显示
取消只看楼主
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
结帖率:50%
已结贴  问题点数:20 回复次数:11 
新手求- C# 地图显示
大家好,新手报到,不知道这个帖子发到这里是否合适。
问题:调试下面的代码时,执行第一句就直接进入到catch
        public static Features SearchLayerFeature(AxMap axMap, double X, double Y, string LayerName, float Radius)
        {
            try
            {
                Layer layer = axMap.Layers.Item(LayerName); //就是这句,layer一直没有值,跟踪就显示null;
                MapXLib.Point source = new PointClass();
                source.Set(X, Y);
                return layer.SearchWithinDistance(source, (double) Radius, 7, 1);
            }
            catch
            {
                return null;
            }
        }
就是想获得地理位置信息并显示,可是无法返回图层的信息,LayerName能获得图层的名称。用的是VS2008,数据库是SQL2005。
谢谢大家的帮忙!
下面是调试时的一个截图:


之前异常是因为axMap一直是null,然后我给axMap实例化axMap = new AxMap();运行,可以看到axMap不再是null,但是又抛出下面这个异常:
引发了“System.Windows.Forms.AxHost.InvalidActiveXStateException”类型的异常
这个要怎么解决呢?
各位大哥帮帮小妹啊...

[ 本帖最后由 lru52777 于 2011-6-14 14:06 编辑 ]
搜索更多相关主题的帖子: return 
2011-06-07 16:20
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 2楼 zhoufeng1988
别的地方没有引用,都在这个函数里,调试几天了...

2011-06-07 16:56
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 4楼 vxbb
?另一个地方也有个引用,但是这里是这个方法的定义啊...
2011-06-08 14:14
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 6楼 vxbb
就在这里引用,但是看不出怎么返回给axMap,小妹新手,还望赐教...
程序代码:
        public static string GetNearestPoint(AxMap axMap, string LayerName, double x, double y)
        {
            try
            {
                Features features;
                float radius = 100f;
                int num2 = 0;
                do
                {
                    features = SearchLayerFeature(axMap, x, y, LayerName, radius);
                    radius *= 2f;
                    num2++;
                }
                while ((features.Count <= 0) && (num2 < 5));
                string keyValue = "";
                double num3 = 0.0;
                for (int i = 1; i < (features.Count + 1); i++)
                {
                    double num5 = axMap.Distance(x, y, features.Item(i).CenterX, features.Item(i).CenterY);
                    if ((i == 1) || (num5 < num3))
                    {
                        features.Item(i).Layer.KeyField = "Address";
                        keyValue = features.Item(i).KeyValue;
                        features.Item(i).Layer.KeyField = "Name";
                        keyValue = keyValue + features.Item(i).KeyValue;
                        num3 = num5;
                    }
                }
                if (!"".Equals(keyValue))
                {
                    keyValue = keyValue + Math.Round(num3, 0).ToString() + "米," + Math.Round(num3, 0).ToString();
                }
                return keyValue;
            }
            catch
            {
                return string.Empty;
            }
        }

2011-06-10 09:11
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 7楼 tw920217
是的啊...
2011-06-10 09:11
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 8楼 q635434924
什么地址,打不开...
2011-06-10 09:12
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 12楼 qq1023569223
ArcEngine编程是什么?不知道哎。这个是MapInfo的代码,是想显示当前的地理位置。item后只能跟数字么?但是整个方案里所有的item后给的都是string类型的参数啊...
2011-06-10 14:59
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 13楼 dwwwing
没见到debug菜单里有callstack这个项啊...我也是一直在找AxMap axMap这个参数,感觉就是它出了问题,可是找不到原因,关于它的资料也很少...
2011-06-10 15:05
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 14楼 qq1023569223
哪里有道理?()换成[],不行哦,一点都不靠谱...
2011-06-10 15:06
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 19楼 dwwwing
就没有这项。。。
2011-06-11 10:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-342123-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.086749 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved