Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 比较gps位置_Iphone_Annotations_Location_Mkmapview - Fatal编程技术网

Iphone 比较gps位置

Iphone 比较gps位置,iphone,annotations,location,mkmapview,Iphone,Annotations,Location,Mkmapview,我以前从未使用过MKMapView或CoreLocation,因此我需要一些帮助。 我想获得我的当前位置(可能在地图视图中显示此位置),并定期更新我的位置,每次比较我的新位置和旧位置,以查看我是否已移动 这样的事情可能吗?我该怎么做?我已经实现了一个MKMapView。但我不知道如何才能得到我目前的职位,并进行比较,看看我是否正在搬家 谢谢你的帮助 这很简单。将showsUserLocation设置为YES即可 为了使它更美观,每次位置改变时,您都可以将MKMapView居中放置。看看怎么做 如

我以前从未使用过MKMapView或CoreLocation,因此我需要一些帮助。 我想获得我的当前位置(可能在地图视图中显示此位置),并定期更新我的位置,每次比较我的新位置和旧位置,以查看我是否已移动

这样的事情可能吗?我该怎么做?我已经实现了一个MKMapView。但我不知道如何才能得到我目前的职位,并进行比较,看看我是否正在搬家


谢谢你的帮助

这很简单。将
showsUserLocation
设置为
YES
即可

为了使它更美观,每次位置改变时,您都可以将
MKMapView
居中放置。看看怎么做

如果要知道是否已移动,应将最近的位置存储在属性中,然后在委托方法中检查新位置是否与上次位置不同

@property (assign, nonatomic) CLLocationCoordinate2D locationCoordinate;
...
@synthesize locationCoordinate = _locationCoordinate;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.mapView.delegate = self;
}

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    if (userLocation.coordinate.latitude != self.locationCoordinate.latitude ||
        userLocation.coordinate.longitude != self.locationCoordinate.longitude) {
        // We moved
    }
    self.locationCoordinate = userLocation.coordinate;
}

实际上,我不确定是否只有在
userLocation
发生更改时才调用委托方法。在这种情况下,您不必将位置存储为属性并执行检查,只需实现委托方法并在那里执行您的工作。

听起来很不错!谢谢,我现在就试试。但也有可能容忍一点偏差吗?比如说100米之类的?因为我无法想象gps系统总是足够精确…啊…但我认为纬度和经度是浮动值,不是吗?这样的比较可能吗?如果((userLocation.coordinate.latitude-self.locationCoordinate)>=12&&(userLocation.coordinate.latitude-self.locationCoordinate)如果您记得使用self.locationCoordinate.12的经度和纬度属性,那么这当然是可能的。但是,这似乎是一个巨大的值。请记住,您是在比较地理位置,而不是长度。如果您绝对需要以米为单位比较距离,则可以实现哈弗森公式: