C#进行MapX二次开发之地图搜索
2010-09-30 21:05:05 来源:WEB开发网在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);
}
}