Direcciones de Google Maps como un map en iPhone

Estoy trabajando en una aplicación de iPhone que necesita mostrar las indicaciones para caminar desde un punto, A, hasta otro punto, B, en una UIWebView que carga una URL de Google Maps con los parameters relevantes.

Ejemplo de la URL que estoy cargando:

[self.myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://maps.google.com/maps?saddr=55.720923,12.513428&daddr=55.745666,12.546387"]]]; 

Necesito el UIWebView para mostrar las instrucciones como un map (como líneas en el map) como image ilustrada en el siguiente enlace:

Cómo quiero que se muestren las instrucciones (direcciones como un map)

Sin embargo, cuando esta URL se carga en el iPhone, las instrucciones se muestran como una list (ver el enlace a continuación).

Cómo se muestran las instrucciones (instrucciones como una list)

Se requiere que el usuario presione el button del map en la barra superior para ver las instrucciones como un map.

¿Cómo puedo configurar los parameters de URL de Google Maps para que las indicaciones se muestren como un map directamente (no como una list) en mi aplicación de iPhone?

Esto es mucho más fácil si usa el proyecto MKMapView.check nvpolyline de github. te ayudará a crear una línea entre el punto a y el pont b, que resuelve tu primer problema.

Y por segundo problema agrega este código en tu proyecto

 NSString* apiUrlStr = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&sensor=false", saddr, daddr]; //&alternatives=true NSURL* apiUrl = [NSURL URLWithString:apiUrlStr]; NSString *apiResponse = [NSString stringWithContentsOfURL:apiUrl]; SBJsonParser *jsonParser = [SBJsonParser new]; NSDictionary *jsonData = (NSDictionary *) [jsonParser objectWithString:apiResponse error:nil]; NSLog(@"apiResponse is : %@",jsonData); //to display route in drop down NSArray *routeArray = [[NSArray alloc]init]; routeArray= [jsonData objectForKey:@"routes"]; for(int i=0;i<[routeArray count];i++) { NSDictionary *tempDictionary = [routeArray objectAtIndex:i]; if([tempDictionary objectForKey:@"overview_polyline"]!=nil) { NSDictionary *secTempDictionary = [tempDictionary objectForKey:@"overview_polyline"]; if([secTempDictionary objectForKey:@"points"]!=nil) { NSString * routePoint =[secTempDictionary objectForKey:@"points"]; [routeSetAry addObject:routePoint]; encodedPoints = [secTempDictionary objectForKey:@"points"]; } // NSLog(@"secTempDictionary is: %@", secTempDictionary); } if([tempDictionary objectForKey:@"legs"]!=nil) { NSArray *lagArray = [[NSArray alloc]init]; lagArray= [tempDictionary objectForKey:@"legs"]; for(int i=0;i<[lagArray count];i++) { NSDictionary *thirdTempDictionary = [lagArray objectAtIndex:i]; if([thirdTempDictionary objectForKey:@"steps"]!=nil) { NSArray *stepsArray = [[NSArray alloc]init]; stepsArray= [thirdTempDictionary objectForKey:@"steps"]; for(int i=0;i<[stepsArray count];i++) { NSDictionary *forthTempDictionary = [stepsArray objectAtIndex:i]; if([forthTempDictionary objectForKey:@"html_instructions"]!=nil) { NSString * directionStr =[forthTempDictionary objectForKey:@"html_instructions"]; NSRange range; while ((range = [directionStr rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound){ directionStr=[directionStr stringByReplacingCharactersInRange:range withString:@""]; } [directionStrAry addObject:directionStr]; } NSDictionary *fifthTempDictionary = [forthTempDictionary objectForKey:@"polyline"]; if([fifthTempDictionary objectForKey:@"points"]!=nil) { NSString * routePoint =[fifthTempDictionary objectForKey:@"points"]; [polylineSetAry addObject:routePoint]; // encodedPoints = [fifthTempDictionary objectForKey:@"points"]; } NSDictionary *sixthTempDictionary =[forthTempDictionary objectForKey:@"distance"]; if([sixthTempDictionary objectForKey:@"text"]!=nil) { NSString * distanceStr =[sixthTempDictionary objectForKey:@"text"]; [distanceStrAry addObject:distanceStr]; // encodedPoints = [fifthTempDictionary objectForKey:@"points"]; } } } } } } NSLog(@"routeSetAry is :%@",routeSetAry); NSLog(@"polylineSetAry is : %i",polylineSetAry.count); 

esto le dará una matriz de cadena de dirección y puede usar esta cadena para mostrar en cualquier parte de su proyecto.

En mi proyecto, he creado una pequeña vista que se muestra en la parte superior del map y en esa vista estoy mostrando la dirección una por una.

No estoy seguro pero deberías referirme a este enlace que Google ha explicado bien "Esquema de URL de Google Maps"

Puedes usar

"comgooglemaps: //? saddr = Google + Inc, + 8th + Avenue, + New + York, + NY & daddr = John + F. + Kennedy + Internacional + Aeropuerto, + Van + Wyck + Expressway, + Jamaica, + Nuevo + York & directionsmode = tránsito "

que tiene diferentes parameters como saddr , daddr , directionsmode

¡Espero que esto ayude!

    Intereting Posts