标题:新手求- C# 地图显示
只看楼主
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
结帖率:50%
已结贴  问题点数:20 回复次数:25 
新手求- 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
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:3 
这个得看看在该函数调用前,有什么地方引用了axMap对象。
调试一下吧。
2011-06-07 16:45
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 2楼 zhoufeng1988
别的地方没有引用,都在这个函数里,调试几天了...

2011-06-07 16:56
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
得分:3 
在函数 SearchLayerFeature 上右键, ‘查找所有引用’

QQ:491697374  Mail:vxbb@
2011-06-07 20:35
lru52777
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:26
专家分:0
注 册:2011-6-7
得分:0 
回复 4楼 vxbb
?另一个地方也有个引用,但是这里是这个方法的定义啊...
2011-06-08 14:14
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
得分:0 
以下是引用lru52777在2011-6-8 14:14:50的发言:

?另一个地方也有个引用,但是这里是这个方法的定义啊...



看方法在哪被调用   就知道  axMap 怎么来的……

QQ:491697374  Mail:vxbb@
2011-06-09 12:54
tw920217
Rank: 4
来 自:湖南
等 级:业余侠客
帖 子:64
专家分:217
注 册:2011-6-2
得分:3 
Item 值能被直接()的啊.   我一直以为要Item[]  这样呢   

Best   Regards
公司分機:886-03-250-8800-2156
手機:15818580357  聯系地址:深圳
2011-06-09 15:36
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



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




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

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