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