在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);
}
}