2012-09-21 18 views
13

Prima di IOS 6, stavo usando questo schema URL per aprire l'applicazione mappe nativa e localizzare sulla posizione corrente gli utenti a un indirizzo che ho creato.posizione attuale non funziona con Apple Maps IOS 6

http://maps.google.com/maps?daddr= "indirizzo + +" & saddr = corrente + Località

Questo è stato grande lavoro, ma ora che hanno ottenuto le mappe di Google RID con IOS 6, abbiamo dovuto controllare quale versione IOS erano on e quindi riferirli al nuovo schema di url di apple maps se stavano usando IOS 6.0 o versioni successive. Il nuovo schema URL che stiamo usando è questo ....

http://maps.apple.com/maps?daddr= "indirizzo + +" & saddr = corrente + Località

Questo si basa sulla nuova documentazione per i regimi di mappa URL, che può essere trovato qui ..

In ogni modo, ho provato un sacco e si riduce alle nuove mappe apple non riconosce posizione corrente, come le mappe Google ha fatto.

Qualcuno sa come risolvere questo problema?

Tenete a mente Sto costruendo un'applicazione html con gap di telefono, in modo da utilizzare codice nativo per impostare l'indirizzo di partenza alla posizione attuale non mi aiuterà.

+0

Hai dimenticato di inserire l'url alla documentazione. –

+0

Woops scusa per averti richiamato così tardi ecco il link della documentazione anche se non sarà di grande aiuto. http://developer.apple.com/library/ios/#featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html#//apple_ref/doc/uid/TP40007894-SW1 –

+0

Utilizzare% 20 al posto del simbolo + (più). Il simbolo più non è il modo corretto per aggiungere uno spazio in un url. Alcuni motori di ricerca e moduli inviati tuttavia usa plus come sostituto per lo spazio, ma il modo corretto è% 20.Ho verificato su un iPad che l'URL sopra riportato apre una navigazione quando il testo è & saddr = Current% 20Location – nivs1978

risposta

10

Ho lo stesso problema. Non ho ancora trovato una soluzione, ma se si lascia fuori la saddr

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

sarà solo chiedere loro da dove cominciare e la prima opzione è "posizione corrente" in modo che quando si fa clic su "posizione corrente" mostrerà la mappa correttamente.

Se qualcuno trova una soluzione migliore si prega di postare come io sto ancora cercando una soluzione migliore.

+0

Grazie per l'aiuto, questa sarà una buona soluzione per ora. Ahh così frustrante anche se le mappe di google erano così eleganti! –

3

È possibile utilizzare il mio metodo:

<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> 

confermato con iOS 5.1 e iOS 6

+0

Questo dovrebbe essere in qualche forma di UIWebView o qualcosa però? Vedo come questo potrebbe essere usato non all'interno di un UIWebView ma richiederebbe comunque il permesso di utilizzare il GPS. –

2

è possibile ottenere le coordinate della posizione corrente utilizzando CLLocationManager, o il suo involucro DKLocationManager (su GitHub), creato di Keith Pitt.

Una volta ottenute le coordinate, è possibile utilizzare il seguente codice di esempio.

+ (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

Sei sicuro che questo funzioni. Penso che ci sia un errore di battitura in "Current + Locaton" – ruralcoder

+0

@ruralcoder Grazie per averlo preso. Hai sbagliato quando si modifica il codice su StackOverflow. Per favore fatemi sapere cosa non funziona. –

3

semplicemente passare "posizione corrente" come indirizzo di origine:

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