MapX中的Symbol是字体TTF , 所以可以通过将图片转换到 TTF 字体
然后在MapX应用程序中使用如下方法
procedure DrawASymbol(Map: TMap;
LayerName: String;
const FontName: String;
Index: Integer);
var
fnt: TFont;
ASymbol: CMapXFeature;
AText: CMapXFeature;
Style: CMapXStyle;
begin
ASymbol := CoFeature.Create;
ASymbol := Map.FeatureFactory.CreateSymbol(ASymbol, Map.DefaultStyle);
Style := ASymbol.Style;
fnt := TFont.Create;
OleFontToFont(fnt, Style);
try
fnt.Name := FontName;
//指定使用的字体TTF的名字
Style.SymbolCharacter := Index;
//指定该TTF字体文件中的第几个字体
Map.Layers.Item(LayerName).AddFeature(ASymbol);
{再接着将字加上去}
AText := CoFeature.Create;
AText := Map.FeatureFactory.CreateText('Text..',...)
Map.Layers.Item(LayerName).AddFeature(AText);
finally
fnt.Free;
end;
end;
我有点忘记了具体的函数,参数,没有控件让我调试,肯定有错,思路大致如此,试试吧
不过你的文字如果要摆正位置(正好在SYmbol的下面),是比较繁的,你需要读取字体的
屏幕尺寸,并且装化出字体下方的地理坐标,然后将文本add上去,
而每次对地图放大缩小都会导致文本相对symbol的位置发生变化(TTF在屏幕上是大小不变的,而地图
坐标确在变)所以解决这个问题挺麻烦的。
应当有更好的办法