wyblue
路人甲
路人甲
  • 注册日期2008-11-24
  • 发帖数3
  • QQ
  • 铜币108枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1211回复:1

delphi和mapobject的二次开发 鼠标点击自动搜索图层?

楼主#
更多 发布于:2009-03-28 12:42
现在利用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;
喜欢0 评分0
wyblue
路人甲
路人甲
  • 注册日期2008-11-24
  • 发帖数3
  • QQ
  • 铜币108枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2009-03-28 12:56
<img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部