关于使用 MapObjects 的问题(三)(颜色标记操作)(150分)

  • 主题发起人 question
  • 开始时间
Q

question

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在 MO (MapObjects) 中用自定颜色标记多块多边形?
具体要求看程序中的注释。

代码如:
procedure TfrmMainMap.SearchBtnClick(Sender: TObject);
var
layer : IMoMapLayer;
recs : IMoRecordset;
shp : IMoPolygon;
rect : IMoRectangle;
fields : IMoFields;
exp : string;
v : Variant;
flds : IMoFields;
fld : IMoField;
tdesc: IMoTableDesc;
I:Integer;
begin
//操作的是一块行政区划图(shp文件)
recs := IMoMapLayer(Map1.layers.item('XZQ')).Records;
recs.MoveFirst;
While not recs.EOF do begin
tdesc := IMoTableDesc(CreateOleObject('MapObjects2.TableDesc'));
tdesc := recs.TableDesc;
flds := recs.Fields;
for i := 0 to tdesc.FieldCount-1 do begin
fld := flds.Item(tdesc.FieldName);
if fld.Name = 'NAME' then begin
//需要在这里制定 Name = 'aa' 的用红色, Name ='BB' 的用白色 Name = 'CC' 的用绿色等
if fld.valueasstring = 'aa' then
//如何写?
end;
end;
recs.MoveNext;
end;
end;
end;
 
PS:哪里有MapObjects开发的例子可以下?MO本身带的例子实用性不强!好多功能都没有!
 
哪位大侠拉小弟一把!
 
question:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
如果还没解决,可以这么办:
先定义一个变量
shp : IDispatch;

sym : IMoSymbol;
在循环中这么写:
......
shp := IDispatch(fld.Value);
Map1.DrawShape(shp,sym);
......
sym的值是根据判断条件先赋值的。
 
请继续或结束
 
请继续或结束
 
接受答案了.
 
顶部