首页 / 浏览问题 / 组件GIS / 问题详情
iobjects c++如何使用自定义的图片
56EXP 2019年10月31日
你好!

自制图片通过idesktop制作符号库,导出的文件为xxx. sym文件,请问我怎么在iobjects c++中如何使用我制作的符号库文件,

1个回答

您好,UGSymbolLib有 AppendFromFile(), LoadFromFile()函数可以加载符号库文件。
694EXP 2019年10月31日
你好!

     我这样做加载出来的是一个点,并不是我自制图片,我自制图片的ID为1000121,名称为雷达1,

  UGPoint2D pooint;
    pooint=qMapControl->ScreentoGeographic(event->pos());
    UGStyle* pStyle = new UGStyle();
    UGGeoPoint *pt = new UGGeoPoint();
    UGSymbolLib *filke;
    
    QString str="/opt/SuperMap/bin/bin/Resource/plots/MarkerLibrary.sym";
    UGString UGstr=Translator::QStr2UGStr(str);
    UGbool isdd;
    UGFillSymbolLib *UGFill=pWorkspace->m_Resources.GetFillSymbolLib();
    isdd=UGFill->AppendFromFile(UGstr);
    //UGint countsld=UGFill->GetSymbolCount();
    pStyle->SetMarkerStyle(1000121);//自制符号的id
    pStyle->SetMarkerSize(1);//点大小,5
    //SetMarkerStyle
    pStyle->SetLineColor(UGRGB(0,255,64));//设置点颜色为红色
    pStyle->SetMarkerHeight(48);      // 设置符号高度
    pStyle->SetMarkerWidth(48);      // 设置符号宽
    // pStyle->SetMarkerSize(2);
    // 设置栅格符号大小为符号原始大小
    pt->SetPoint(pooint);
    pt->SetStyle(pStyle);
    pMap->m_TrackingLayer.Add(pt,_U("123") );

请教一下时哪里出了问题
那是什么符号呢?你的.sym文件中只包含自己的符号吗?
是一个雷达简易图片,对只包含我自己的符号并且只有一个我用

UGint countsld=UGFill->GetSymbolCount();
   UGbool isextit=UGFill->IsIDExisted(1000121);来测试其中countsld值为387,isextit为0。
你做的是点符号吧?符号库应该用UGMarkerSymbolLib.
对,你是说只可以自制成线符号库?
你好!

我 用UGMarkerSymbolLib *ds=pWorkspace->m_Resources.GetMarkerSymbolLib();
 UGbool isd= ds->AppendFromFile(UGstr);

来加载符号库文件时isd的值时0,加载失败。

还有,如果符号库加载成功我用如下代码是否可以实现自制的图片在地图上显示?

pStyle->SetMarkerStyle(3);//自制符号的id
    pStyle->SetMarkerSize(1);//点大小,5
    //SetMarkerStyle
    pStyle->SetLineColor(UGRGB(0,255,64));//设置点颜色为红色
    pStyle->SetMarkerHeight(48);      // 设置符号高度
    pStyle->SetMarkerWidth(48);      // 设置符号宽
    // pStyle->SetMarkerSize(2);
    // 设置栅格符号大小为符号原始大小
   // pt->SetID(1000121);
    pt->SetPoint(pooint);
    pt->SetStyle(pStyle);
    pMap->m_TrackingLayer.Add(pt,_U("123") );
已经搞定!谢谢
...