2012-09-21 35 views
13

Antes de iOS 6, estaba usando este esquema de URL para abrir la aplicación de mapas nativos y encontrar direcciones desde la ubicación actual de los usuarios a una dirección que creé.La ubicación actual no funciona con Apple Maps IOS 6

http://maps.google.com/maps?daddr= "+ dirección +" & saddr = + Ubicación actual

Esto funcionaba muy bien, pero ahora que se obtuvieron mapas rid Google con iOS 6, tuvimos que comprobar la versión de IOS que eran y luego referirlos al nuevo esquema de url de mapas de manzana si estaban usando iOS 6.0 o superior. El nuevo esquema de URL que estamos utilizando es esto ....

http://maps.apple.com/maps?daddr= "+ dirección +" & saddr = + Ubicación actual

Esto se basa en la nueva documentación de esquemas mapa URL se puede encontrar aquí ..

De todos modos, lo he probado un montón y se reduce a los nuevos mapas de manzana reconoce la ubicación actual, como lo hicieron los mapas de Google.

¿Alguien sabe cómo puedo solucionar esto?

Tenga en cuenta que estoy compilando una aplicación html con la brecha del teléfono, por lo que usar el código nativo para establecer la dirección inicial de la ubicación actual no me ayudará.

+0

Se le olvidó poner la url de la documentación. –

+0

Woops, le pido disculpas por volver tan tarde que aquí está el enlace de la documentación, aunque no será de mucha ayuda. http://developer.apple.com/library/ios/#featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html#//apple_ref/doc/uid/TP40007894-SW1 –

+0

Utilice% 20 en lugar de símbolo + (más). El símbolo más no es la forma correcta de agregar un espacio en una url. Sin embargo, algunos motores de búsqueda y presentaciones de formularios usan más como sustituto del espacio, pero la forma correcta es% 20.He verificado en un iPad que la URL anterior abre una navegación cuando el texto es & saddr = Current% 20Location – nivs1978

Respuesta

10

Estoy teniendo el mismo problema. No he encontrado todavía una solución, pero si se deja fuera de la saddr

http://maps.apple.com/maps?daddr=" + address 

Será sólo hay que preguntar por dónde empezar y la primera opción es "ubicación actual" así que cuando se haga clic en "ubicación actual" se mostrará el mapa correctamente

Si alguien encuentra una mejor solución, publíquela ya que aún estoy buscando una solución mejor.

+0

Gracias por la ayuda, que será una buena solución por ahora. ¡Ah, tan frustrante, aunque los mapas de Google fueran tan elegantes! –

3

Puede usar mi método:

<script type="text/javascript"> 

     var link = "maps:saddr=YPlat,YPlong&daddr=42.118599,-72.625122"; 
     navigator.geolocation.getCurrentPosition(showPosition); 

     function showPosition(position) 
     { 

      link = link.replace("YPlat",position.coords.latitude); 
      link = link.replace("YPlong",position.coords.longitude); 

      window.location = link; 
     } 
    </script> 

confirmado con iOS 5.1 y iOS 6

+0

Esto debería tener alguna forma de UIWebView o algo así? Veo cómo esto podría usarse no desde UIWebView, pero aún así requeriría solicitar permiso para usar el GPS. –

2

, usted puede obtener las coordenadas de la ubicación actual utilizando CLLocationManager, o su envoltorio DKLocationManager (en github), creado por Keith Pitt.

Una vez que tenga las coordenadas, puede usar el siguiente ejemplo de código.

+ (void) openDirectionFrom:CLLocation* currentLocation To:(NSString*) daddr { 
    NSString* urlStr; 
    NSString* saddr = @"Current+Location"; 

    if ([[UIDevice currentDevice] systemVersion] floatValue] >=6) { 
     //iOS 6+, Should use map.apple.com. Current Location doesn't work in iOS 6 . Must provide the coordinate. 
     if ((currentLocation.coordinate.latitude != kCLLocationCoordinate2DInvalid.latitude) && (currentLocation.coordinate.longitude != kCLLocationCoordinate2DInvalid.longitude)) { 
      //Valid location. 
      saddr = [NSString stringWithFormat:@"%f,%f", currentLocation.coordinate.latitude,currentLocation.coordinate.longitude]; 
      urlStr = [NSString stringWithFormat:@"http://maps.apple.com/maps?saddr=%@&daddr=%@", saddr, daddr]; 
     } else { 
      //Invalid location. Location Service disabled. 
      urlStr = [NSString stringWithFormat:@"http://maps.apple.com/maps?daddr=%@", daddr]; 
     } 
    } else { 
     // < iOS 6. Use maps.google.com 
     urlStr = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%@&daddr=%@", saddr, daddr]; 
    } 

    [(UIApplicationWithEvents*)[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]]; 

} 
+0

¿Estás seguro de que esto funciona? Creo que hay un error tipográfico en "Current + Locaton" – ruralcoder

+0

@ruralcoder Gracias por atraparlo. Obtuve el error al editar el código en stackoverflow. Por favor, hágame saber lo que no funciona. –

3

sólo tiene que pasar "ubicación actual" como dirección de origen:

http://maps.apple.com/maps?saddr=Current%20Location&daddr=Your_Address 
Cuestiones relacionadas