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

时间: 2024-09-30 14:38:12

C#进行MapX二次开发之地图搜索的相关文章

C#进行MapX二次开发之鹰眼实现

鹰眼一般是指GIS应用中,系统有两个一大一小的图,小图提供快速定位地图位置的功能,这个是在GIS中应用比较广泛的一个功能,在Google地图中,右下角也有一个小图框,也是指的鹰图.如下图所示.    在本次介绍的例子中,左边是主地图,右边是小地图,即鹰眼. 鹰眼要实现下面几个功能: 1. 主地图变化时,鹰眼也要做出相应的位置变化,以便更好展示位置所在. 2.鹰眼地图移动到任何一个位置,主地图也要做相关联的位置变化,以实现地图的粗略定位. 3.主地图实现鼠标滚轮的变化支持. 首先我们先设置主地图的

FlexPaper二次开发问题及搜索高亮显示

原文:FlexPaper二次开发问题及搜索高亮显示 最近有个需求,做一个IT知识库,类似于文库,说到文库肯定会用到在线浏览文档了,所有在网上翻阅了一下类似豆丁的在线浏览器插件的资料,将其进行了二次开发,在这跟需要用到的朋友分享一下,下面部分内容用到有些前辈的博客内容,首次写博,写的不好之处请见谅...高手勿喷,O(∩_∩)O谢谢 1.前期准备工作 1.首先二次开发,当然前提是需要一份FlexPaper的源码.源码下载地址: http://files.cnblogs.com/yimiao/Flex

求vb+mapx二次开发高手 我已经实现了地图的加载,和一般的功能,现在需要,点击一个区改变区的颜色?

问题描述 我现在双击一个区,连接到该区的属性数据用frmprop的grid来显示,代码如下:PrivateSubMap1_DblClick()OnErrorResumeNextIfMap1.CurrentTool=miSelectToolThenDimiAsIntegerDimlyrAsMapXLib.LayerSetfrmprop.map=Map1Fori=1ToMap1.Layers.CountSetlyr=Map1.Layers(i)Iflyr.Selection.Count=1Thenf

C#进行MapX二次开发之开篇介绍及资源汇总

关于地理信息的开发有好多控件工具可以选择,GIS软件包括三家美国GIS开发商ESRI,Intergraph和 MapInfo的软件产品,以及国产软件:MapGIS,GeoStar和Citystar,SuperMap等产品.另外还有一些边缘 产品,是Web GIS的领域,不是纯粹的GIS产品,称之为地图应用平台可能较好,如Google公司的Google Maps.微软的Virtual Earth,国内的51地图,搜狗的地图等. 可能用的比较多的是ESRI了,他的 Arc IMS或者ArcGIS S

C#进行MapX二次开发之控件基本操作

上篇介绍了MapX的部分基本使用代码,包括放大.缩小.缩放到初始大小(全图).平移.矩形选择. 圆形选择.箭头.打开图层对话框 .打开ActiveX属性对话框 .添加符号等基本操作代码,本篇继续探 讨一些控件的基本操作. MapX提供的标准工具,不同的工具将会使鼠标能够完成多种任务.例如 ,如果当前的工具设成 miLabelTool,那么当单击鼠标时,会在此特指的地图对象上放置标签.鼠标光标 将根据正使用的工具更改形状.MapX 可用的标准工具列表如下所示: 工具 常量 描述 Add Line

C#进行MapX二次开发之图层操作

特别说明,本文整理自一篇网络的文章<MapX从数据库读取数据形成新图层(C#)> 在C#中实 现MapX从数据库读取数据形成新图层分为两个问题: 1.MapX从数据库读取数据形成新图层: 2.将DataTable转换为ADO的Recordset.这里的第二个问题是由第一个问题引起的,因为MapX是一 个COM控件,而且它只支持ADO的数据访问方式,而C#编程时一般会使用ADO.NET方式,为此需要在两种方 式之间做一下转换.(当然也可以在C#中使用ADO方式) DataTable转换为ADO的

基于C#的AE二次开发,地图中的label不能显示,但是mxd文档中的label是显示的

问题描述 一运行程序,有时候能看到label闪现一下,一弹出下面这个框后label就不显示了,无论放大缩小都这样我用的VS2010AE10.2ARCMAP10.2跪求大神相助

关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单等相关问题

原文:关于FlexPaper 2.1.2版本 二次开发 Logo .打印.搜索.缩略图.添加按钮.js交互.右键菜单等相关问题 先废话几句.最近用到文档在线浏览功能,之前用的是print2flash(一个工具,文档直接转flash,自带翻页搜索等一系列功能),由于无法与js进行交互,所以改用flexpaper. 由于之前没接触过Flex,了解不多,所以文章难免有不合适的地方.希望各位给予指正. 首先感谢ajava.org的mark,一系列文章有很多的帮助,少走很多弯路.   开发工具:1.Ado

百度地图二次开发,如何获取指定范围的公交站

问题描述 百度地图二次开发,如何获取指定范围的公交站 解决方案 你这样问让别人怎么回答?又不是都有百度地图的api,原理性的东西大家都懂,就是不知道怎么实现