跟踪 iphone 的位置并通知是不是在 ios Objective C 中越过某些公里

Posted

技术标签:

【中文标题】跟踪 iphone 的位置并通知是不是在 ios Objective C 中越过某些公里【英文标题】:Track location of iphone and notify if crosses certain kilometeres in ios Objective C跟踪 iphone 的位置并通知是否在 ios Objective C 中越过某些公里 【发布时间】:2016-09-29 06:27:31 【问题描述】:

我想跟踪我的 ios 设备的位置并在应用程序中通知它是否越过某些公里。假设我想通知它是否从设备的当前位置越过 1 公里。请帮助我是 iOS 编程新手。

我能够获取当前位置。 请帮忙。

这是我能做的。

    - (void)viewDidLoad 

        [super viewDidLoad];
        self.mapView.delegate=self;
        // Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7.
        self.locationManager = [[CLLocationManager alloc] init];
        self.locationManager.delegate = self;
        self.locationManager.desiredAccuracy=kCLLocationAccuracyBest;
        self.locationManager.distanceFilter = kCLLocationAccuracyBestForNavigation;//constant update of device location
        [self.locationManager requestWhenInUseAuthorization];
        [self.locationManager requestAlwaysAuthorization];

        [self.locationManager startUpdatingLocation];
    
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

    self.userLocation = userLocation;
    MKCoordinateSpan coordinateSpan; coordinateSpan.latitudeDelta = 0.3f; coordinateSpan.longitudeDelta = 0.3f;
    MKCoordinateRegion regionToShow; regionToShow.center = userLocation.coordinate; regionToShow.span = coordinateSpan;
    [self.mapView setRegion:regionToShow animated:YES];

    MKPointAnnotation *point=[[MKPointAnnotation alloc]init];
    point.coordinate=userLocation.coordinate;
    point.title=@"where Am I";
    point.subtitle=@"YOU are Here";
    [self.mapView addAnnotation:point];

【问题讨论】:

***.com/questions/35515528/… 使用 locationManager.distanceFilter = 1000; // 米 你需要计算当前位置到旧位置的距离。 CLLocationDistance dist = [loc1 distanceFromLocation:loc2]; 并在它给你 1 公里时通知。 您能否通过示例代码解释一下.. 怎么做.. @EktaMakadiya 【参考方案1】:

self.currentLocation 必须是CLLocation 的对象。

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

    CLLocationDistance dist = [self.currentLocation distanceFromLocation:userLocation.location];

    if (dist == 1000.0) 

        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Title" message:[NSString stringWithFormat:@"Message : you moved %.2f", dist] preferredStyle:UIAlertControllerStyleAlert];
        [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) 

            // your code on OK click
        ]];
        [self presentViewController:alert animated:TRUE completion:^ ];
    

    self.currentLocation = userLocation.location;
    self.userLocation = userLocation;

【讨论】:

[self.userLocation distanceFromLocation:userLocation.location];您好,此 userLocation.location 出现错误。它不采用 MKUserLocation 类型。 @VRAwesome 请为不同的类创建两个不同的对象:@property (retain, nonatomic) CLLocation *currentLocation;@property (retain, nonatomic) MKUserLocation *userLocation;

以上是关于跟踪 iphone 的位置并通知是不是在 ios Objective C 中越过某些公里的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用蓝牙(Android 和 iOS)跟踪手机位置

在 iOS 中显示视图而不是默认通知

使用 iOS 地理围栏跟踪多个(20 多个)位置

iOS 位置更新,即使应用程序没有运行(比如找到我的 iphone)

是否可以通过他在 ios 中的电话号码跟踪用户位置?

跟踪推送通知并记录它们