Узнать расстояние между 2 точками
Смотрите, есть такая ф-ция, которая определяет местоположение пользователя,
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation{
/* Получена информация о новом местоположении. */
NSLog(@"Latitude = %f", newLocation.coordinate.latitude);
NSLog(@"Longitude = %f", newLocation.coordinate.longitude);
}
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error{
/* Не удалось получить информацию о местоположении пользователя. */
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
if ([CLLocationManager locationServicesEnabled]){
self.myLocationManager = [[CLLocationManager alloc] init];
self.myLocationManager.delegate = self;
[self.myLocationManager startUpdatingLocation];
и есть вот такая ф-ция, которая считает расстояние между двумя точками
CLLocation *location1 = [[CLLocation alloc] initWithLatitude:59.957069 longitude:30.323013];
CLLocation *location2 = [[CLLocation alloc] initWithLatitude:60.050043 longitude:30.345783];
float betweenDistance=[location1 distanceFromLocation:location2];
NSLog(@"Distance is %f km",betweenDistance/1000);
Подскажите как мне вбить вместо координат location1 местоположение пользователя, что бы считать расстояние не от точки до точки, а от пользователя до точки?
UPDATE:
#import "TestViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface TestViewController () <CLLocationManagerDelegate>
@property (strong, nonatomic) IBOutlet UITextField *testUserPosition;
@property (nonatomic, strong) CLLocationManager *myLocationManager;
@property (nonatomic,strong) CLLocation *startLocation;
@end
@implementation TestViewController
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
_startLocation = newLocation;
}
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error{
/* Не удалось получить информацию о местоположении пользователя. */
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
if ([CLLocationManager locationServicesEnabled]){
self.myLocationManager = [[CLLocationManager alloc] init];
self.myLocationManager.delegate = self;
[self.myLocationManager startUpdatingLocation];
CLLocation *startLocation = self.myLocationManager.location;
CLLocation *location2 = [[CLLocation alloc] initWithLatitude:60.050043 longitude:30.345783];
float betweenDistance=[startLocation distanceFromLocation:location2];
NSLog(@"Distance is %f km",betweenDistance/1000);
NSString *exhibEmail = [NSString stringWithFormat:@"Distance is %f km",betweenDistance/1000];
//int x = (@"Distance is %f km",betweenDistance/1000);
UIAlertView* alert = [[UIAlertView alloc] init];
[alert setTitle:@"Заголовок alert"];
[alert setMessage:exhibEmail];
[alert addButtonWithTitle:@"Просто кнопка"];
[alert setCancelButtonIndex:0];
[alert show];
} else {
/* Геолокационные службы не активизированы.
Попробуйте исправить ситуацию: например предложите пользователю
включить геолокационные службы. */
NSLog(@"Location services are not enabled");
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Источник: Stack Overflow на русском