WEB开发网
开发学院软件开发C语言 C#进行MapX二次开发之地图搜索 阅读

C#进行MapX二次开发之地图搜索

 2010-09-30 21:05:05 来源:WEB开发网   
核心提示:在GIS中,地标或者道路等信息查找是一项很重要的功能,C#进行MapX二次开发之地图搜索,类似于我们查找数据库记录那样,需要模糊进行匹配,我们看看操作层的代码,是如何实现的,一般来说,找到需要的地标或者道路等地图元素后

在GIS中,地标或者道路等信息查找是一项很重要的功能,类似于我们查找数据库记录那样,需要模糊进行匹配,一般来说,找到需要的地标或者道路等地图元素后,双击可以定位到地图的具体位置,并放大地图,类似于Google Map的Fly to功能。

由于地图的信息是按照层来存储的,所以我们查找信息的时候,也是按照一层层来进行检索,由于MapInfo的地图一般有很多层,每层进行遍历会比较花费时间,所以一般的专业系统,都只是关系一部分层,我们通常在配置文件中指定感兴趣的层名集合,然后查找的时候,在这些层中查找,这样可以提高检索的速度。

我们看看操作层的代码,是如何实现的。

           foreach (string layer in layerNameArray)
            {
                if (string.IsNullOrEmpty(layer)) 
                    continue;
                try
                {
                    #region 每层的查询
                    string condition = string.Format("NAME like \"%{0}%\"", SearchLocation);
                    MapXLib.Layer mapLayer =  TarMap.Layers._Item(layer);
                    if (mapLayer != null)
                    {
                        feature = mapLayer.Search(condition, null);
                        int count = feature.Count;
                        if (feature != null)
                        {
                            MapXLib.Dataset ds = TarMap.DataSets.Add(MapXLib.DatasetTypeConstants.miDataSetLayer, mapLayer, layer,
                                0, 0, 0, Missing.Value, false);
                            Dictionary<string, ResultOfSearching> resultList = new Dictionary<string, ResultOfSearching>();
                            
                            //To Do 遍历特性代码,待续
                            
                            TarMap.DataSets.RemoveAll();
                        }
                    }
                    #endregion
                }
                catch (Exception ex)
                {
                    LogHelper.Error(ex);
                }                
            }

1 2 3  下一页

Tags:进行 MapX 二次

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接