2011-10-12 43 views
1

WhirlyGlobe是一個非常有用的框架,我想爲每個國家/地區顯示Country Flags而不是名稱。 當LabelLayer.h看似乎有可能覆蓋一個圖片從文本標記產生的icontexture:在WhirlyGlobe中使用紋理作爲標籤

@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

沿着每邊的icon.png 2的冪? – mousebird

回答

0

抱歉耽擱的第一個字符。我需要建立某種飼料的計算器。

總之,簡單的答案是沒有一個偉大的方式來做到這一點。我爲客戶添加標記,但這不會超過1.2 w,你應該能夠使標籤顯示紋理。這是您在此展示的圖標紋理。

要創建一個紋理,請執行以下操作:

Texture *theTex = new Texture(@"nameoftexture", @"png"); 
theTex->setUsesMipmaps(true); 
theTexId = theTex->getId(); 
scene->addChangeRequest(new AddTextureReq(theTex)); 

然後使用它:

singleLabel.text = @""; 
singleLabel.iconTexture = theTexId; 
+0

謝謝,我真的很感謝你花時間回答。 我已經實現了你的代碼,但標籤中仍然沒有紋理。我在第一個問題中更新的代碼。 –

+0

添加一些文字以便於查找。可能只是尺寸問題。 – mousebird

+0

感謝它的工作 –