iPhone SDK:使用GPS跟踪用户位置

iPhone SDK:使用GPS跟踪用户位置,iphone,mapkit,mkmapview,core-location,Iphone,Mapkit,Mkmapview,Core Location,我有几个关于核心定位和GPS的问题 首先,在核心位置使用什么方法持续获取用户当前坐标?应该在什么时间间隔检索这些文件 第二,每次接收到这些坐标时,是否应将其推入NSMUTABLEARAY,以便坐标数组表示用户路径 谢谢,只是想让我开始思考这个问题。最好的方法是阅读,它链接到几个示例项目。简短版本: 将delegate属性设置为将接收位置更新的类 在委托中实现协议 调用相应的方法开始更新位置和/或标题 您可以定义精度可接受的范围以及希望接收自动更新的频率(基于与最后一点的距离)。此外,您还可以关闭

我有几个关于核心定位和GPS的问题

首先,在核心位置使用什么方法持续获取用户当前坐标?应该在什么时间间隔检索这些文件

第二,每次接收到这些坐标时,是否应将其推入NSMUTABLEARAY,以便坐标数组表示用户路径


谢谢,只是想让我开始思考这个问题。

最好的方法是阅读,它链接到几个示例项目。简短版本:

  • delegate
    属性设置为将接收位置更新的类
  • 在委托中实现协议
  • 调用相应的方法开始更新位置和/或标题

  • 您可以定义精度可接受的范围以及希望接收自动更新的频率(基于与最后一点的距离)。此外,您还可以关闭位置管理器,然后通过使用计时器随意将其重新打开

    至于保存位置以构建路径,这并不是那么简单。首先,您将不断获得GPS位置,直到达到所需的精度,对于未来的任何点,在获得良好位置之前,您可能会获得多个不准确的点。因此,构建这些点的列表基本上就是它们的路径列表,以及许多额外的点。 你可以通过只保存那些具有你想要的准确性的点来解决这个问题,但在这方面这是一个不完美的世界

    最好的情况是,我建议您保留两个列表,一个是路径,另一个是正在比较的位置的运行列表,直到您得到一个高度准确的位置,然后将其放在您的路径列表中。
    一些示例项目按照这些思路进行操作,请查看它们。

    非常简短的版本:

    首先,在.h中采用
    协议,并导入

    然后,在.m中,go:

    - (void)viewDidLoad {
        locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        [locationManager startUpdatingLocation];
    }
    
    
    -(void)locationManager:(CLLocationManager *)manager
       didUpdateToLocation:(CLLocation *)newLocation
              fromLocation:(CLLocation *)oldLocation
    {
        CLLocationCoordinate2D here =  newLocation.coordinate;
        NSLog(@"%f  %f ", here.latitude, here.longitude);
    }
    
    您的
    -(void)locationManager:(CLLocationManager*)manager diddupdatetolocation:(CLLocation*)newLocation fromLocation:(CLLocation*)oldLocation
    方法将在每次核心位置对您有话要说时被ping,这应该每隔几秒钟发生一次。这些CLLocation对象包含有关精度的信息,因此您可以在该方法中筛选好的点

    一定要调用
    [locationManager StopUpdatengLocation]
    ,然后在某个时候调用
    [locationManager release]


    祝你找到自己

    您必须执行以下操作:

  • 如果设备无法访问internet
  • 从GPS设备获取坐标
  • 通过短信发送这些坐标
  • 在SMS网关上接收和解码SMS消息,您必须进行配置以从设备接收信息
  • 更新应用程序数据库或正在使用的任何其他存储上的信息
  • 用最新信息更新地图上的位置
  • 如果设备可以访问互联网
  • 从GPS设备获取坐标
  • 连接到应用服务器(可能是某些服务)并上载信息
  • 更新应用程序数据库或正在使用的任何其他存储上的信息
  • 用最新信息更新地图上的位置

  • 我可能错了,应该是:NSLog(@“%f%f,%@”,here.lation,here.longitude);不是:NSLog(@“%f%f”,here.latitude,here.longitude);哦,完全正确。这将给您带来严重的访问错误。更正。即使应用程序最小化,更新位置标记器也会工作吗?@kmehta-要在应用程序处于后台时工作,您需要将info.plist键“UIBackgroundModes”设置为“location”。如果你这样做的话,你应该期待一个非常严重的电池寿命下降!忘掉1。如果你没有互联网,你就无法从设备中获取坐标。至少在用户未按下“发送”键的情况下。iOS不允许在没有用户交互的情况下发送SMS。