2010-03-16 14 views

Répondre

5

Vous recherchez l'API "CoreLocation".

est ici a tutorial

+0

Merci David ... –

17

Il est (comme toujours pour les fonctionnalités de base) une documentation complète sur le site de développeur et vous trouverez peut-être this example utile;

Les points clés à retenir sont:

1) Une fois que vous recevez des mises à jour de localisation, elles arrivent de manière asynchrone et vous devez y répondre au fur et à mesure qu'elles arrivent. Vérifiez l'exactitude et l'horodatage pour décider si vous souhaitez utiliser l'emplacement.

2) N'oubliez pas d'arrêter de recevoir les mises à jour dès que vous avez l'emplacement souhaité (il se peut que ce ne soit pas le premier), sinon vous perdrez la vie de la batterie.

3) Le premier emplacement retourné à vous est souvent le dernier CACHED un, et le téléphone signalera cet endroit avec le même (peut-être élevé) la précision qu'elle avait quand elle a obtenu le correctif avant. Vous pourriez donc obtenir une correction qui prétend être exacte à 10 mètres, mais elle a été reçue hier lorsque vous étiez à des kilomètres de votre emplacement actuel. La devise de ceci est N'OUBLIEZ PAS DE VÉRIFIER LE TIMESTAMP - cela vous indique quand le correctif d'emplacement a été effectivement reçu. Here's an example of how to check the timestamp.

Espérons que ça aide.

+0

Merci Roger, va vous attraper après avoir essayé avec votre exemple –

+2

Le lien de la documentation du développeur est cassé alors je l'ai réparé. Je dois dire que le troisième point concernant les emplacements mis en cache est quelque chose que de nombreux développeurs négligent et c'est certainement un bon point! +1 pour ça. Je suis en train de mettre à jour le post de @ Roger pour inclure comment les horodateurs de localisation devraient également être vérifiés. – javatarz

1

télécharger ce example il vous montrera l'emplacement actuel

-2

La vraie solution peut être trouvée ici. Z5 Concepts iOS Development Code Snippet

Il suffit d'un peu d'encodage.

- (IBAction)directions1_click:(id)sender 
{ 
    NSString* address = @"118 Your Address., City, State, ZIPCODE"; 
    NSString* currentLocation = @"Current Location"; 
    NSString* url = [NSStringstringWithFormat: @"http://maps.google.com/maps?saddr=%@&daddr=%@",[currentLocation stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    UIApplication *app = [UIApplicationsharedApplication]; 
    [app openURL: [NSURL URLWithString: url]]; 
} 
0

Si vous avez juste besoin d'obtenir l'emplacement actuel de l'appareil, à l'aide de base Localisation exige directement une bonne partie de code, car vous devez gérer le retard jusqu'à ce que le GPS de l'appareil dispose d'une solution précise sur l'emplacement actuel, qui prend nombre de secondes. (L'API CLLocationManager semble être conçue pour les applications qui nécessitent des mises à jour de localisation continue, comme les applications de navigation GPS détaillées.)

Au lieu d'utiliser CLLocationManager directement, je vous suggère d'utiliser un open source component such as INTULocationManager qui gère Tout cela fonctionne pour vous et rend trivialement simple de demander une ou plusieurs demandes discrètes pour l'emplacement actuel du périphérique.

0

code complet est ici-bas

1 glisser carte cadre d'importation donner délégué

en dernière ligne de ce code self.yourmapreferencename.setRegion ...

// tout le code ici

importation UIKit importation MapKit importation CoreLocation classe ViewController: UIViewController, CLLocationManagerDelegate {

@IBOutlet weak var mapView: MKMapView! 
var locationManager : CLLocationManager! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if CLLocationManager.locationServicesEnabled() 
    { 
     locationManager = CLLocationManager() 
     locationManager.delegate = self 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.requestAlwaysAuthorization() 
     locationManager.startUpdatingLocation() 

    } 

}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 

    let location = locations.last! as CLLocation 
    let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude) 
    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)) 

    self.mapView.setRegion(region, animated: true) 
} 

}