想获取图层中的点,然后在点上标记symbol
下面的代码为什么在DrawShape时候出错啊?
procedure TForm1.Button2Click(Sender: TObject);
var
flds:IMoFields;
fld:IMoField;
pt:IMoPoint;
ly:IMoMapLayer;
symbol:IMoSymbol;
begin
//
Symbol:= IMoSymbol(CreateOleObject('MapObjects2.Symbol'));
Symbol := map1.TrackingLayer.symbol[0];
ly:= IMoMapLayer(CreateOleObject('MapObjects2.MapLayer'));
ly:= IMoMapLayer(Map1.Layers.Item('行政中心'));
flds:= ly.Records.Fields;
fld:= flds.Item('shape');
pt:= IMoPoint(CreateOleObject('MapObjects2.point'));
pt:= IMoPoint(IDispatch(fld.Value)); Map1.DrawShape(pt,Symbol); ////这里出错了.
end;
btw:
我的想法是在MSSQL数据库中存point的地理坐标信息,然后根据在Tmap上标记点.这个点是经常变动的,所以不能用layer画出来.
我用上面的Map1.DrawShape方法能实现吗?
下面的代码为什么在DrawShape时候出错啊?
procedure TForm1.Button2Click(Sender: TObject);
var
flds:IMoFields;
fld:IMoField;
pt:IMoPoint;
ly:IMoMapLayer;
symbol:IMoSymbol;
begin
//
Symbol:= IMoSymbol(CreateOleObject('MapObjects2.Symbol'));
Symbol := map1.TrackingLayer.symbol[0];
ly:= IMoMapLayer(CreateOleObject('MapObjects2.MapLayer'));
ly:= IMoMapLayer(Map1.Layers.Item('行政中心'));
flds:= ly.Records.Fields;
fld:= flds.Item('shape');
pt:= IMoPoint(CreateOleObject('MapObjects2.point'));
pt:= IMoPoint(IDispatch(fld.Value)); Map1.DrawShape(pt,Symbol); ////这里出错了.
end;
btw:
我的想法是在MSSQL数据库中存point的地理坐标信息,然后根据在Tmap上标记点.这个点是经常变动的,所以不能用layer画出来.
我用上面的Map1.DrawShape方法能实现吗?
错误提示没仔细看.
提示这个方法只能在layer绘制前调用.
我晕.
把这个DrawShape放在Map1BeforeLayerDraw方法里面就OK了.
谢谢.