web-dev-qa-db-fra.com

CLLocationCoordinate2D to CLLocation

j'ai la boucle suivante dans mon viewDidLoad:

    for(int i=1; i<[eventsArray count]; i++) {
  NSArray *componentsArray = [[eventsArray objectAtIndex:i] componentsSeparatedByString:@","];
  if([componentsArray count] >=6) {
   Koordinate *coord = [[Koordinate alloc] init];
   coord.latitude = [[componentsArray objectAtIndex:0] floatValue];
   coord.longtitude = [[componentsArray objectAtIndex:1] floatValue];
   coord.magnitude = [[componentsArray objectAtIndex:2] floatValue];
   coord.depth = [[componentsArray objectAtIndex:3] floatValue];
   coord.title = [componentsArray objectAtIndex:4];
   coord.strasse = [componentsArray objectAtIndex:5];
   coord.herkunft = [componentsArray objectAtIndex:6];
   coord.telefon = [componentsArray objectAtIndex:7];
   coord.internet = [componentsArray objectAtIndex:8];
   [eventPoints addObject:coord];


  }

coord est CLLocationCoordinate2D

mais comment puis-je utiliser coord dans la méthode suivante, parce que j'en ai besoin pour obtenir une distance entre deux coordonnées:

    - (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation{

}

aidez-moi s'il vous plaît je suis coincé!

merci à tous d'avoir aidé à l'avance

24
Marco

CLLocation a une méthode init nommée -(id)initWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude. Utilisez ensuite - (CLLocationDistance)getDistanceFrom:(const CLLocation *)location pour obtenir la distance entre deux objets CLLocation.

40
AlexVogel

Simple 

CLLocation *location = [[CLLocation alloc] initWithLatitude:lat longitude:lon];
10
Can Ürek

Pour la foule rapide, 

J'ai une méthode appelée "fetchCafesArroundLocation" qui est actualisée après le déplacement de la carte. C’est ainsi que j’ai traité l’obtention de Lat et Lon dans CLLocation à partir de CLLocationCoordiate2d, puis que je passais la variable CLLocation à la méthode de traitement.

func mapView(mapView: MKMapView!, regionDidChangeAnimated animated: Bool){

    var centre = mapView.centerCoordinate as CLLocationCoordinate2D

    var getLat: CLLocationDegrees = centre.latitude
    var getLon: CLLocationDegrees = centre.longitude


    var getMovedMapCenter: CLLocation =  CLLocation(latitude: getLat, longitude: getLon)

    self.lastLocation = getMovedMapCenter
    self.fetchCafesAroundLocation(getMovedMapCenter)

}

"Comment puis-je utiliser mon instance en tant que CLLocation?"

Vous ne pouvez pas, parce que ce n'en est pas un. Vous devez en créer un .

N'oubliez pas de libérer ce que vous allouez. Voir les règles de gestion de la mémoire .

2
Peter Hosey

Si coord est un CCLocationCoordinate2D, vous pouvez alors affecter le newLocation de Au 

**- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation**

déléguez en obtenant les propriétés latitude et longitude de la propriété de coordonnée de la CLLocation comme ci-dessous:

coord.latitude = newLocation.coordinate.latitude;
coord.longitude = newLocation.coordinate.longitude;
0
GeneCode