2013-01-19 10 views
6

UIActivityViewController è un ottimo modo per condividere immagini e testo. Come posso condividere una posizione? Per condividere immagini e testo, aggiungo gli oggetti corrispondenti a un NSArray, che passo poi come UIActivities. Vorrei solo aggiungere il CLLocationCoordinate2D, ma questa è una struttura, non un oggetto.Come posso condividere la posizione usando UIActivityViewController?

Qualche idea?

risposta

1

Ho avuto lo stesso problema ma non sono riuscito a trovare una risposta per far funzionare le coordinate tramite UIActivityViewController.

Come soluzione alternativa, ho utilizzato un approccio simile a quello che ho visto essere utilizzato in WhatsApp, in cui si ottiene un foglio di azione con i diversi provider di mappe. Il codice seguente mostrerà un avviso e ti consentirà di selezionare l'apertura di una determinata posizione tramite Waze/Google Maps/Apple Maps: verranno visualizzate solo le app installate. Basta sostituire i valori di "longitudine" e "latitudine" con le proprietà di latitudine/longitudine CLLocationCoordinate2D.

UIAlertController* alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; 

UIAlertAction* appleMaps = [UIAlertAction actionWithTitle:@"Open in Maps" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.apple.com/?q=%@,%@", latitude, longitude]]]; 
     }]; 
UIAlertAction* googleMaps = [UIAlertAction actionWithTitle:@"Open in Google Maps" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"comgooglemaps://?q=%@,%@", latitude, longitude]]]; 
     }]; 
UIAlertAction* waze = [UIAlertAction actionWithTitle:@"Open in Waze" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"waze://?ll=%@,%@", latitude, longitude]]]; 
     }]; 

[alert addAction:appleMaps]; 
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]]) 
      [alert addAction:googleMaps]; 
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"waze://"]]) 
      [alert addAction:waze]; 


UIAlertAction* cancel = [UIAlertAction actionWithTitle:@"cancel" style:UIAlertActionStyleCancel handler:nil]; 

[alert addAction:cancel]; 

[self presentViewController:alert animated:YES completion:nil]; 
Problemi correlati