|
阅读:1211回复:1
delphi和mapobject的二次开发 鼠标点击自动搜索图层?
现在利用delphi和mapobject进行二次开发。 <BR> 在同一map中加载了四个图层,然后加了一个stringgrid可以用鼠标点击地图读取地图数据信息。 <BR> 现在只能读取设定层的属性,请问怎样自动搜索图层。 <BR> 可以透过最上面的图层 ,自动搜索鼠标所点击的部分? <BR> <BR> 谢谢 <BR><BR><BR> if (QueryBtn.Down) then //查询图层信息 <BR> begin <BR> // 得到一个图层 <BR> l := IMoMapLayer(CreateOleObject('MapObjects2.MapLayer')); <BR> l := IMoMapLayer(Map1.Layers.item(1)); <BR> // transform the map to point coordinates <BR> p := IMoPoint(CreateOleObject('MapObjects2.Point')); <BR> p :=Map1.ToMapPoint(x,y); <BR><BR> // 执行搜索 <BR> if l.ShapeType=23 then <BR> recs :=l.SearchShape(p,12,'') <BR> else <BR> recs :=l.SearchByDistance(p,Map1.ToMapDistance(10),''); <BR><BR> // 如果找到则显示 属性和数值 <BR> if not recs.eof then <BR> begin <BR> // 显示属性 <BR><BR><BR> fields := recs.Fields; <BR> tdesc := recs.TableDesc ; <BR> //fld := IMoField(CreateOleObject('MapObjects2.Field')); <BR> for i := 0 to tdesc.FieldCount - 1 do <BR> begin <BR> StringGrid1.cells[0,0] :=' Field'; <BR> StringGrid1.cells[1,0] :=' Value'; <BR> fld := fields.Item(tdesc.FieldName); <BR> StringGrid1.cells[0,i+1] := fld.name; <BR> StringGrid1.Cells[1,i+1] :=fld.valueasstring; <BR> end; <BR> end;
|
|
|
1楼#
发布于:2009-03-28 12:56
<img src="images/post/smile/dvbbs/em02.gif" />
|
|