Locate

业务数据关联地图定位功能分析


by zhouyilong 20150408

设计思路

目前需要实现的功能是知道某一条业务数据,通过这条数据在地图上定位到具体的位置。这里想到,在R_GIS_MIS表中,通过业务编码可以查找到地图编码。得到地图编码之后,就可以遍历图层来得到需要的地图信息。为了使遍历图层更加有效率,固增加相关的配置文件,配置出需要遍历的图层。

定位相关的文件

  • SVC.Dependencylib.BusinessCtrl.LocateBC:定位主要的业务操作层
  • SVC.Dependencylib.Config.LocateXML.xml:表对应图层URL列的配置文件
  • SVC.Dependencylib.Model.LocateField:用来解析定位配置文件的对象
  • USPart.DependencyLib.BusinessObj.Locate:主要实现定位功能

Locate文件详细分析

Locate中所有的字段

  • locateLayer:定位专用的图层,生命周期和Locate对象一致
  • dependencylibwebservice:公共wcf的操作工具,用于获得定位相关的配置文件
  • locateTopics:保存获得的定位相关的配置文件信息

Locate中的所有方法

  • Locate():构造函数,定位图层加入地图中,并得定位相关的配置文件
  • StartLocate(codeGis,topicName):传入地图编码和配置文件主题标记名,调用QueryMapExtent(codeGis,locateUrls),开始定位
  • StopLocate():结束定位,移出定位图层
  • QueryMapExtent(codeGis,locateUrls):遍历图层
  • queryTask_Failed(sender,e):未找到相关地图信息后执行
  • queryTask_ExecuteCompleted(sender,e):查找成功后执行,定位到地图中

Locate的使用规范

注意这里注意说到的是在公共窗体中使用Locate对象

  1. 在需要使用定位功能的控件初始化的时候初始化一个Locate对象,请不要在实现定位的代码中每次都重新New一个Locate对象,保持只有一个Locate实例存在。
  2. 定位方法中使用代码示例如下:

    //定位
    public void locateOperation(CommonToolArgs commonToolArgs)
    {
        D0_LAND currentParcel = parcellist.ElementAt(dgList.SelectedIndex);
        dependencylibwebservice.Client.GetCodeGisByCodeMisAsync(currentParcel != null ? currentParcel.D0_CODE : string.Empty);
    }
    
  3. 在外层window窗体关闭的时候调用StopLocate()结束定位(这里并没有在控件的unload事件中结束定位,主要原因是unload事件并不是一定会执行),注意需要显示结束定位
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值