2010-02-23 13 views
18

Tengo el siguiente bucle en mi viewDidLoad:CLLocationCoordinate2D a CLLocation

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

pero ¿cómo puedo usar coord en el siguiente método, porque necesito esto para conseguir la distancia entre dos coordenadas :

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

} 

por favor ayuda ¡estoy varado!

gracias a todos por ayudar de antemano

+3

'coord' no es un' CLLocationCoordinate2D', 'coord' es un objeto que ha creado a sí mismo, una instancia de' Koordinate'. –

Respuesta

37

CLLocation tiene un método init llamado -(id)initWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude. Luego use - (CLLocationDistance)getDistanceFrom:(const CLLocation *)location para obtener la distancia entre dos objetos CLLocation.

+0

¿Qué tipo de distancia es esto? ¿Gran circulo? ¿Línea de rumbo? –

+0

Creo que es un gran círculo, pero el método "getDistanceFrom" ha quedado en desuso. Fue reemplazado por "distanceFromLocation". – mpemburn

0

Si coord es un CCLocationCoordinate2D, a continuación, puede asignar el newLocation de el delegado

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

por conseguir tanto de los latitude y longitude propiedades de coordinar la propiedad del CLLocation de la siguiente manera:

coord.latitude = newLocation.coordinate.latitude; 
coord.longitude = newLocation.coordinate.longitude; 
9

Simple

CLLocation *location = [[CLLocation alloc] initWithLatitude:lat longitude:lon]; 
4

Para la multitud de Swift,

Tengo un método llamado "fetchCafesArroundLocation" que se actualiza después de que se mueve el mapa. Así es como me las arreglé para obtener Lat y Lon en CLLocation de CLLocationCoordiate2d y luego pasé la variable CLLocation al método de manejo.

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) 

} 
Cuestiones relacionadas