2010-02-23 2 views
18

У меня есть следующий цикл в моей viewDidLoad:CLLocationCoordinate2D к 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]; 


    } 

коорда является CLLocationCoordinate2D

но как я могу использовать коорд следующего способа, потому что мне нужно это, чтобы получить расстояние между двумя координатами :

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

} 

, пожалуйста, помогите мне, я оказался на мель!

спасибо всем за помощь заранее

+3

'' '' '' '' CLLocationCoordinate2D', 'coord' - это объект, который вы создали сами, экземпляр' Koordinate'. –

ответ

37

CLLocation есть метод инициализации с именем -(id)initWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude. Затем используйте - (CLLocationDistance)getDistanceFrom:(const CLLocation *)location, чтобы получить расстояние между двумя объектами CLLocation.

+0

Какое расстояние это? Большой круг? Линия Рейм? –

+0

Я считаю, что это отличный круг, но метод «getDistanceFrom» устарел. Он был заменен на «distanceFromLocation». – mpemburn

2

«как я могу использовать свой экземпляр в качестве CLLocation?»

Вы не можете, потому что это не один. Вам нужно create one.

Не забудьте освободить то, что вы выделите. См. the memory management rules.

0

Если коорд является CCLocationCoordinate2D, то вы можете назначить newLocation из в

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

делегат, получая оба latitude и longitude свойств координат свойства CLLocation, как показано ниже:

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

Простые

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

Для толпы Swift,

У меня есть метод под названием «fetchCafesArroundLocation», который обновляется после перемещения карты. Вот как я обработал получение Lat и Lon в CLLocation из CLLocationCoordiate2d, а затем передал переменную CLLocation методу обработки.

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) 

} 
Смежные вопросы