关于MAPX的一个小问题(100分)

  • 主题发起人 主题发起人 htrun
  • 开始时间 开始时间
H

htrun

Unregistered / Unconfirmed
GUEST, unregistred user!
我用MAPX做个小东西,现在怎样才能做到点击图层上的某一图元,显示该图元的标注内容呢?问题可能很简单,但是我不知道从哪里入手,先谢谢各位~~
 
请参考
http://www.diming.com.cn/gis/productagent/digpro_xtreme2004.htm
http://mikelwu.cnblogs.com/archive/2005/10/11/252215.html
 
四、标注AutoLabel
好日子一去不复返了,原来总觉得Mapx很多地方设计得不是很自然,比如,feature和具体的feature之间的某些属性的关系,有时令人迷惑。但是,用了Mapxtreme,才感觉到Mapx的方便。真不知MapInfo怎么想的!原来的标注非常简单,layer有个autolabel属性,一设就可以了。现在呢:
//James.Liu的代码
Table table = Session.Current.Catalog.OpenTable("usa.tab");
Map map = Session.Current.MapFactory.CreateEmptyMap(new Size(300, 300));
LabelLayer layer = new LabelLayer();
map.Layers.Add(layer);
LabelSource source = new LabelSource(table);
source.DefaultLabelProperties.Caption = "State_Name";
layer.Sources.Append(source);

//我的
LabelLayer layer = new LabelLayer();
MapControl1.Map.Layers.Add(layer);
LabelSource source = new LabelSource(MapInfo.Engine.Session.Current.Catalog.GetTable("地名"));
source.DefaultLabelProperties.Caption = "f_name";
//标注用到的那个字段名称
layer.Sources.Append(source);
看Layer.Sources的架势,好像可以共用一个LabelLayer,试试,的确可以
 
看看能实现你的要求不
 
其实我不是要实现自动标注,而是想在点击图元时返回标注内容,然后根据该标注字段去关系型数据库中查询该条记录。
用Mapxtreme应该还要Mapxtreme吧,因为我的那个东西也不大,而且前面用的都是MAPX,因此也不想换Mapxtreme了,请你帮我想想MAPX的方法吧~~同样谢谢~~
 
顶顶,看看,帮帮~~
 
再顶~~~~~~~~~
 
再顶上去看看~~
 
[:(][:(],帮我看看吧,最近几天看了很多资料,可是还是没解决~
 
Mapxtreme能在delphi下开发么?GZ
 
procedure TForm1.Map1MouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
var
tx,ty:Single;
tempx,tempy:double;
lyr: Layer;
pt: Point;
ftr,ftrUpdate: Feature;
ftrs: Features;
strOID :string;
begin

tx:=X;
ty:=y;
map1.ConvertCoord(tx,ty,tempx,tempy,miScreenToMap);
pt := CoPoint.Create;
pt.Set_(tempx, tempy);
lyr := MapCtrl.Layers.Item['你的图层'];
ftrs := lyr.searchatpoint(pt,miSearchResultDefault);
ftr:=ftrs.item[1];//取第一个

lyr.KeyField := '标注字段';
strOID := ftr.KeyValue;//得到值

end;
 
接受答案了.
 
后退
顶部