应用MapX编程实现地图数据查询

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 citylamp 的 blog

0、综述

    应用mapx控件实现查询的功能并不太难。mapx为我们提供了find、findfeature等对象,可以用来实现我们需要的功能:)

1、本程序实现从下列表中选择一个节点,并以此节点为中心进行进行定位的功能(实例以第一层rtuname属性的值进行查询)

private sub command1_click()
    dim findobj as mapxlib.find
    dim foundfeature as findfeature
    '从要查询的rtu图层生成find对象,并为这个对象设置要查询的finddataset、findfield属性
    set findobj = form1.map1.layers.item(1).find
    set findobj.finddataset = form1.map1.datasets("rtu节点" & " dataset")
    set findobj.findfield = findobj.finddataset.fields("rtuname")
   
    set foundfeature = findobj.search(combo1.text)
     
    me.hide
    ' 关掉autoredraw是因为centerx(y)的改变就要刷新图层,autoredraw打开的话会造成二次刷新
    form1.map1.autoredraw = false
    form1.map1.centerx = foundfeature.centerx
    form1.map1.centery = foundfeature.centery
    form1.show
   
end sub


2、把上面的程序稍微改写一下,实现按照用户输入的字段进行查询定位的功能:

private sub command2_click()

    dim findobj as mapxlib.find
    dim foundfeature as findfeature
    '从要查询的rtu图层生成find对象,并为这个对象设置要查询的finddataset、findfield属性
    set findobj = form1.map1.layers.item(1).find
    set findobj.finddataset = form1.map1.datasets("rtu节点" & " dataset")
    set findobj.findfield = findobj.finddataset.fields("rtuname")
          
    set foundfeature = findobj.search(text1.text)
     
    if foundfeature.findrc mod 10 = 1 or foundfeature.findrc mod 10 = 2 then
        me.hide
        ' 关掉autoredraw是因为centerx(y)的改变就要刷新图层,autoredraw打开的话会造成二次刷新
        form1.map1.autoredraw = false
        form1.map1.centerx = foundfeature.centerx
        form1.map1.centery = foundfeature.centery
        form1.show
    else
        msgbox "不存在该rtu节点!"
    end if
 
end sub

 

本文关键:MapX,查询
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top