首页 / 浏览问题 / 组件GIS / 问题详情
8C组件地图上显示的label,如何换成文本类型,而不是只能显示数字
13EXP 2020年10月13日

使用产品:iobect 8c 810 操作系统:win7 x64
数据类型: 文本,时间戳
问题详细描述:代码里面把List里的Username(里面代表手机号或者时间戳)在地图上用户位置处以label显示,但是现在不知道怎么显示文本类型的,显示的只能显示数字,且大小位数有限制,比如手机号11位就显示不出来,成了乱码。

代码(自己感觉与标签有关的代码部分,这部分自己试着改改不出来):

1个回答

SmUserID是数据集默认自带的一个字段,这个字段为数值型字段,所以只能存储数值,并且电话号码超过了该数值的最大值,所以不能正常显示,如果需要显示电话号或者其他文本,需要另外去新建一个新的字段存储,字段类型选择文本字段类型即可;

新建字段的代码可以参考如下代码:

UGDatasetVector * dataset_point1 = (UGDatasetVector *)m_pWorkspace->GetDataSource(0)->GetDataset(_U("Point1"));    

UGFieldInfo FieldInfo =UGFieldInfo();  

FieldInfo.m_nType = UGC::UGFieldInfo::FieldType::INT32;  

FieldInfo.m_nSize = 8;  FieldInfo.m_strName = _U("Field1");    

dataset_point1->Open();  

bool dd = dataset_point1->CreateField(FieldInfo);  

在数据集没有打开到地图的情况下,需要先执行dataset->open()
4,620EXP 2020年10月13日

还是有点晕,我自己感觉去添加了这几句代码,然后把SmUserID换成Field1,(但其他数据向量——显示别的东西的SmUserID没换),然后测试了一下这块还是数字类型的,没有变成文本类型。

应该怎么添加新的字段存储呢,是还需要新建一个UGDatasetVector指针对象吗?我这里就用的原来的,而且原来的UGDatasetVector的建法跟你说的建法不一样,应该是哪一种呢?

顺便请教一下8c c++组件,官方有没有教程或手册之类的pdf呢?

我这个代码是继承下来的,现在弄这个基本就靠自己感觉,网上没找到任何一个可用的教程手册。网上找的一般都是别的supermap软件,那代码不是这个风格。

上面的代码不是将SmUserID换成Field1,是新增加了一个全新的字段Field1来存储文本字段值。

filedtype需要设置为文本型字段,文本型字段为Text。

你原来不是有个数据集吗,你原来的smuserid就是那个数据集的呀,只需要在原来的数据集上面添加一个新的字段用来存文本字段,然后制作标签专题图的时候就设置你新建的这个字段。

建议你先了解一下supermap的数据结构,可以下载一个idesktop,在idesktop中打开你的数据,了解一下这个显示的文本是如何制作来的 。下面是supermap产品下载链接。

http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx

...