viernes, 14 de agosto de 2009

Google Maps API ( Implementacion de google maps PARA IPHONE )

En esta pequeña entrada pretendo presentar un nuevo juguete, para los hackers qué visiteis mi blog.

En concreto, es un pequeño wrapper qué interactua con google maps, y permite hacer el uso de sus funciones minimamente en un entorno mobil.

El codigo de dicho wrapper lo puedes encontrar un poco mas abajo, a sí como un pequeño ejemplo de como realizar un programa con dicho wrapper.

Saludos, y espero qué os lo paseis muy bien con dicho codigo.


//

// GoogleMapsApi.m

// GloobyMaps

//

// Created by Moises Encinas on 13/08/09.

//


#import "GoogleMapsApi.h"




@implementation GoogleMapsApi


@synthesize city;


-(BOOL)isNull:(NSString*)character{

BOOL success = FALSE; //por defecto le decimos qué no esta en blanco.

if (character == nil ){

success = TRUE;

}

return ( success );

}

-(NSString*)getMainUrl:(NSString*)key{

apiKey = [self setApiKey:key];

NSString * url = @"http://maps.google.com/staticmap?center=";

NSString * resultUri = [url stringByAppendingString:latitude];

NSString * coma = [resultUri stringByAppendingString:@","];

NSString * resultUrl = [coma stringByAppendingString:longitud];

NSString * semFinalUrl = [resultUrl stringByAppendingString:@"&format=mobile&zoom=8&size=600x375&key="];

NSString * finalUrl = [ semFinalUrl stringByAppendingString:apiKey];

return ( finalUrl );

}

-(void)checkCodeResponse;{

NSString * cityappend = self.city;

NSString * urlFinal = @"&output=csv&key=MI-KEY-API";

NSString * urlFinal2 = [cityappend stringByAppendingString:urlFinal];

NSString * encoded = [ self urlEncode:urlFinal2];

NSString * urlPrincipal = @"http://maps.google.com/maps/geo?q=";

NSString * resultPrincipal = [urlPrincipal stringByAppendingString:encoded];

NSURL * url = [NSURL URLWithString:resultPrincipal];

if ( url != nil ){

NSString * jsonResponse = [[NSString alloc]initWithContentsOfURL:url];

NSArray * arrayDevuelto = [jsonResponse componentsSeparatedByString:@","];

if ( [self isNull:[arrayDevuelto objectAtIndex:0]] ){

NSLog(@"En blanco");

}else{

if ( [[ arrayDevuelto objectAtIndex:0] isEqualToString:@"200"] ){

NSLog(@"Respuesta correcta");

latitude = [arrayDevuelto objectAtIndex:2];

longitud = [arrayDevuelto objectAtIndex:3];

NSLog(longitud);

NSLog(latitude);

}else if ( [[arrayDevuelto objectAtIndex:0] isEqualToString:@"400"]){

NSLog(@"Error analizando la solicitud");

}else if ( [ [ arrayDevuelto objectAtIndex:0] isEqualToString:@"500"] ){

NSLog(@"Error procesando la solicitud solicitada");

}else if ( [ [ arrayDevuelto objectAtIndex:0] isEqualToString:@"601"] ){

NSLog(@"No se ha establecido ningun valor de busqueda");

}else if ( [[ arrayDevuelto objectAtIndex:0] isEqualToString:@"602"] ){

NSLog(@"No se ha encontrado ninguna ubicacion geografica");

}else if ( [[ arrayDevuelto objectAtIndex:0] isEqualToString:@"603"] ) {

NSLog(@"No se ha podido devolver el codigo grografico de la ruta por por motivos juridicos");

}else if ( [[ arrayDevuelto objectAtIndex:0] isEqualToString:@"610"] ){

NSLog(@"Clave proporcionada invalida");

}else if( [[ arrayDevuelto objectAtIndex:0] isEqualToString:@"620"] ){

NSLog(@"La clave proporcionada ha sobrepasado el limite de solicitudes");

}

}

}

}

-(NSString*)urlEncode:(NSString*)param{

NSString *encoded=[param stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

return (encoded);

}


-(UIImage*)downloadMap:(NSString*)key{

NSLog([self getMainUrl:@"MI-API-KEY"]);

NSURL * urlStream = [NSURL URLWithString:[self getMainUrl:@"MI-API-KEY"]];

NSData * data = [[NSData alloc]initWithContentsOfURL:urlStream];

UIImage * resultImagen = [[UIImage alloc]initWithData:data];

return ( resultImagen );

}


-(NSString*)setApiKey:(NSString*)apiResult{

apiKey = apiResult;

return ( apiKey );

}

@end



//

// GoogleMapsApi.h

// GloobyMaps

//

// Created by Moises Encinas on 13/08/09.

//


#import



@interface GoogleMapsApi : NSObject {

NSString * apiKey;

NSString * latitude;

NSString * longitud;

NSString * city;

}


@property(nonatomic,retain)NSString * city;


-(NSString*)setApiKey:(NSString*)apiKey;

-(BOOL)isNull:(NSString*)character;

-(void)checkCodeResponse;

-(UIImage*)downloadMap:(NSString*)key;

-(NSString*)urlEncode:(NSString*)urlEncoded;

-(NSString*)getMainUrl:(NSString*)key;



@end



//Programa de ejemplo.


-(IBAction)parseJsonContent{

GoogleMapsApi * api = [[GoogleMapsApi alloc]init];

api.city = [bar text];

UINavigationItem * item = [[UINavigationItem alloc]initWithTitle:[api city]];

viewImage.hidden = YES;

[barTitle pushNavigationItem:item animated:YES];

[api checkCodeResponse];

NSLog(@"Requesting for..");

NSLog([bar text]);

[view reload];

[view loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[api getMainUrl:@"MI-API-KEY"]]]];

}


No hay comentarios:

Publicar un comentario