2011-06-17 4 views
1

Eh bien, je suis arrivé ce code:graphiques dynamiques Google

NSLog(@"button pressed"); 
    NSString* [email protected]"http://chart.apis.google.com/chart?chf=bg,s,67676700&chs=300x225&cht=p&chd=s:Uf9a&chdl=30°|40°|50°|60°"; 
    NSString *theurl=[myurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:theurl] cachePolicy:NSURLRequestUseProtocolCachePolicy 
                 timeoutInterval:60.0];            

    NSURLResponse* response; 
    NSError* error; 
    NSData *imageData=[NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; 
    NSLog(@"%@",error); 
    NSLog(@"%@",response); 
    NSLog(@"%@",imageData); 

    UIImage *myimage = [[UIImage alloc] initWithData:imageData]; 

    graphimage.image=myimage; 

Rien de spécial ... vraiment mais quand je demande l'url: http://chart.apis.google.com/chart?chf=bg,s,67676700&chs=300x225&cht=p&chd=s:Uf9a&chdl=30 ° | 40 ° | 50 ° | 60 °

il demandes avec des degrés comme 30/40/50 ... mais je veux des valeurs et non des degreses là-bas que je reçois de la base de données .., comment puis-je le faire?

+0

Salut Emre, y at-il une place avec quelques exemples de graphiques google pour l'objectif c, comme vous avez ici? – Luda

+0

Luda, vous pouvez consulter https://developers.google.com/chart pour des exemples! Et vous pouvez utiliser la technique ci-dessus dans ma question pour le montrer – Oblieapps

Répondre

2

Vous devrez simplement obtenir les degrés d'une base de données et les stocker dans une collection. Ensuite, vous serez en mesure de faire une boucle sur la collection et de les ajouter à la chaîne.

//Get Degrees from database, store them in an array of NSNumbers 
... 
//Pretend these are from a db 
NSArray *degreesFromDatabase = [NSArray arrayWithObjects: 
            [NSNumber numberWithInt:35], 
            [NSNumber numberWithInt:50], 
            [NSNumber numberWithInt:25], 
            [NSNumber numberWithInt:72], 
            nil]; 
    //URL with all static content 
    NSMutableString *myurl = [NSMutableString stringWithString:@"http://chart.apis.google.com/chart?chf=bg,s,67676700&chs=300x225&cht=p&chd=s:Uf9a&chdl="]; 

    int count = [degreesFromDatabase count]; 

    for(NSUInteger i = 0; i < count; ++i) 
    { 
     NSNumber *degree = [degreesFromDatabase objectAtIndex:i]; 
     [myurl appendFormat:@"%@%%C2%%B0", degree]; 
     if(i < count - 1) 
      [myurl appendString:@"|"]; 
    } 
+0

Merci pour cet exemple de code! – Oblieapps

2

j'ai écrit une fonction qui reçoivent tous les paramètres nécessaires, crée un tableau Google et la convertit en un UIImage.

enter image description here

Ici, il est:

-(UIImage )produceGoogleChartImage:(NSString)title

      xAxis:(NSArray*)axisXLabels 
          yAxis:(NSArray*)axisYLabels 
         andData:(NSArray*)dataValues 
          color:(NSString*)lineColor 
        chartWidth:(NSNumber*)width 
        chartHight:(NSNumber*)hight 
        lagendLabel:(NSString*)legend 
         minScale:(NSNumber*)minScale 
         maxScale:(NSNumber*)maxScale{ 

NSMutableString *myurl = [NSMutableString stringWithString:@"http://chart.googleapis.com/chart?chxl=0:|"]; 


//axisXLabels 
int countAxisXLabels = [axisXLabels count]; 

for(NSUInteger i = 0; i < countAxisXLabels; ++i) 
{ 
    NSNumber *value = [axisXLabels objectAtIndex:i]; 
    [myurl appendFormat:@"%@", value]; 
    if(i < countAxisXLabels - 1) 
     [myurl appendString:@"|"]; 
} 

[myurl appendString:@"|1:|"]; 


//axisYLabels 
int countAxisYLabels = [axisYLabels count]; 
for(NSUInteger i = 0; i < countAxisYLabels; ++i) 
{ 
    NSNumber *value = [axisYLabels objectAtIndex:i]; 
    [myurl appendFormat:@"%@", value]; 
    if(i < countAxisYLabels - 1) 
     [myurl appendString:@"|"]; 
} 

[myurl appendString:@"&chxr=0,0,105|1,3.333,100&chxt=x,y&chs="]; 

//size 
[myurl appendFormat:@"%@x%@&cht=lc&chd=t:", width,hight]; 

//dataValues 
int countDataValues = [dataValues count]; 

for(NSUInteger i = 0; i < countDataValues; ++i) 
{ 
    NSNumber *value = [dataValues objectAtIndex:i]; 
    [myurl appendFormat:@"%@", value]; 
    if(i < countDataValues - 1) 
    [myurl appendString:@","]; 
} 

//legend 
[myurl appendFormat:@"&chdl=%@&chg=25,50&chls=2&",legend]; 

//color 
[myurl appendFormat:@"chm=o,%@,0,-2,8&chco=%@",lineColor,lineColor]; 

//title 
[myurl appendFormat:@"&chtt=+%@",title]; 

//scale 
[myurl appendFormat:@"&chds=%@,%@",minScale,maxScale]; 



NSString *theurl=[myurl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:theurl] 

cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

NSURLResponse* response; 
NSError* error; 
NSData *imageData=[NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response 

error:&error]; NSLog(@"%@",error); NSLog(@"%@",response); NSLog(@"%@",imageData);

UIImage *myimage = [[UIImage alloc] initWithData:imageData]; 


return myimage; 

// Chart Wizard: https://developers.google.com/chart/image/docs/chart_wizard 
} 

Et voici la fonction de test:

-(void)test{

NSString* title = @"Height History"; 
NSArray *axisXLabels = [NSArray arrayWithObjects: 
         @"Jan", 
         @"Feb", 
         @"Mar", 
         @"Jun", 
         @"Jul", 
         @"Aug", 
         nil]; 


NSArray *axisYLabels = [NSArray arrayWithObjects: 
         [NSNumber numberWithInt:0], 
         [NSNumber numberWithInt:50], 
         [NSNumber numberWithInt:150], 
         [NSNumber numberWithInt:200], 
         nil]; 

NSArray *dataValues = [NSArray arrayWithObjects: 
         [NSNumber numberWithInt:130], 
         [NSNumber numberWithInt:140], 
         [NSNumber numberWithInt:140], 
         [NSNumber numberWithInt:150], 
         [NSNumber numberWithInt:170], 
         [NSNumber numberWithInt:180], 
         nil]; 

NSString *lineColor = @"FF9900"; 

NSNumber *width = [NSNumber numberWithInt:300]; 

NSNumber *hight = [NSNumber numberWithInt:200]; 

NSNumber *minScale = [NSNumber numberWithInt:0]; 

NSNumber *maxScale = [NSNumber numberWithInt:200]; 

NSString *legendLabel = @"cm"; 

UIImage *myimage =[self produceGoogleChartImage:title xAxis:axisXLabels yAxis:axisYLabels andData:dataValues color:lineColor 

chartWidth:width chartHight:hight lagendLabel:legendLabel minScale:minScale maxScale:maxScale];

_chartImage.image=myimage; 

}

Vous devriez obtenir une image, comme celui de la question.

+0

J'ai trouvé une réponse à ma question il y a longtemps! Mais cela peut être utile à d'autres personnes, thnx! – Oblieapps

Questions connexes