Я пытаюсь создать приложение на основе определения местоположения, и я пытался отладить его в течение 3 дней, и до сих пор не могу понять, что не так ... В моем контроллере представления мне пропускают некоторые точки местоположения (широта).и долготы) методом делегата:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
currentPoint.lat=newLocation.coordinate.latitude*M_PI/180;
currentPoint.longit=newLocation.coordinate.longitude*M_PI/180;
}
где currentPoint - это объект из созданного мною класса Pointxy, представляющий собой не что иное, как объект, имеющий два свойства lat и longit, оба с плавающей точкой.
Затем я создал еще один класс с именем Shape, который имеет NSMutableArray (ptArray) и свойство с именем area, представляющее собой длинный двойной тип.
Затем я сохраняю кучу заостренных объектов в ptArray, а затем преформ использую их вследующий метод Shape:
-(void)CalculateArea{
for (int i=0; i<[self NumberofPoints]-1; i++) {
Pointxy *pointi=[ptArray objectAtIndex:i];
Pointxy *pointiplus1=[ptArray objectAtIndex:i+1];
area-=6371.0*6371.0/2.0*(pointiplus1.longit-pointi.longit)*(2+sinf(pointiplus1.lat)+sinf(pointi.lat));
}
Pointxy *pointzero=[ptArray objectAtIndex:0];
Pointxy *pointlast=[ptArray objectAtIndex:[ptArray count]-1];
area-=6371.0*6371.0/2.0*(pointzero.longit-pointlast.longit)*(2+sinf(pointzero.lat)+sinf(pointlast.lat));
area=area*1000000.0;
}
Проблема, с которой я столкнулся, заключается в том, что я пытаюсь отобразить область в UILabel, используя этот код:
NSString *AreaString=[[NSString alloc]initWithFormat:@"%Lf",MyShape.area];
[AreaLabel setText:AreaString];
, где MyShape является объектом Shape иAreaLabel - это UILabel, у меня всегда отображается 0,0000, и я не должен видеть, почему?Я думаю, это может быть вопрос точности с моими переменными, не так ли?Большое спасибо