WhirlyGlobe是一个非常有用的框架,我想显示Country Flags而不是每个国家/地区的名称。 在查看LabelLayer.h时,似乎可以用图片覆盖从Text标签生成的icontexture:
@interface SingleLabel : NSObject {
NSString *text;
WhirlyGlobe::GeoCoord loc;
NSDictionary *desc; // If set, this overrides the top level description
WhirlyGlobe::SimpleIdentity iconTexture; // If non-zero, this is the texture to use as an icon }
但我没有找到任何方法使用标签进行图片显示 有人可以帮我理解如何用图片标签替换文字标签吗?
关注@Mousebird这里的第一个答案就是我实施的内容:
// This describes how our labels will look
NSDictionary *labelDesc =
[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES],@"enable",
[UIColor clearColor],@"backgroundColor",
[UIColor whiteColor],@"textColor",
[UIFont boldSystemFontOfSize:16.0],@"font",
[NSNumber numberWithInt:4],@"drawOffset",
[NSNumber numberWithFloat:0.08],@"height",
[NSNumber numberWithFloat:0.08],@"width",
nil];
// Build up an individual label
NSMutableArray *labels = [[[NSMutableArray alloc] init] autorelease];
SingleLabel *texLabel = [[[SingleLabel alloc] init] autorelease];
Texture *theTex = new Texture(@"icon", @"png");
theTex->setUsesMipmaps(true);
texLabel.text = @"";
texLabel.iconTexture = theTex->getId();
theScene->addChangeRequest(new AddTextureReq(theTex));
[texLabel setLoc:GeoCoord::CoordFromDegrees(5, -3)];
[labels addObject:texLabel];
[self.labelLayer addLabels:labels desc:labelDesc];
还是一个问题,纹理加载到内存中但没有出现。将字符串作为文本在标签的第一个字符
上创建一个空白方块答案 0 :(得分:0)
抱歉延误。我需要为stackoverflow设置某种feed。
无论如何,简短的回答是没有很好的方法来做到这一点。我正在为客户添加标记,但直到1.2才会出现。现在,您应该能够使标签显示纹理。这就是你在那里展示的iconTexture。
要创建纹理,请执行以下操作:
Texture *theTex = new Texture(@"nameoftexture", @"png");
theTex->setUsesMipmaps(true);
theTexId = theTex->getId();
scene->addChangeRequest(new AddTextureReq(theTex));
然后使用它:
singleLabel.text = @"";
singleLabel.iconTexture = theTexId;