Objective c 使用GNS 1000等外部GPS的地区监控iOS应用程序

Objective c 使用GNS 1000等外部GPS的地区监控iOS应用程序,objective-c,gps,geofencing,clregion,Objective C,Gps,Geofencing,Clregion,我正在开发一个区域监控应用程序,但我想使用一个外部GPS,这样我可以将区域缩小到15-20米,并获得更高的精度。我正在将iPhone连接到Arduino上,以便在该地区通过信号灯打开时进行通信。我打开蓝牙GNS 1000以获得更好的GPS,但仍然无法获得准确度,或者根本没有区域回调。我已经测试了好几次,结果都不一致。也测量了距离,有时没有得到任何反馈。我不是一个程序员,在过去的几周里我刚刚学习了objective C。目的是帮助视力受损者导航。任何帮助都将不胜感激 我调用这些函数是为了获得反馈,

我正在开发一个区域监控应用程序,但我想使用一个外部GPS,这样我可以将区域缩小到15-20米,并获得更高的精度。我正在将iPhone连接到Arduino上,以便在该地区通过信号灯打开时进行通信。我打开蓝牙GNS 1000以获得更好的GPS,但仍然无法获得准确度,或者根本没有区域回调。我已经测试了好几次,结果都不一致。也测量了距离,有时没有得到任何反馈。我不是一个程序员,在过去的几周里我刚刚学习了objective C。目的是帮助视力受损者导航。任何帮助都将不胜感激

我调用这些函数是为了获得反馈,但我无法指出哪里出了问题:

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
    NSLog(@"Entered Region - %@", region.identifier);
    [self setArduino:YES];
    [self showRegionAlert:@"Entering Region" forRegion:region.identifier];

}

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
    NSLog(@"Exited Region - %@", region.identifier);
    [self setArduino:NO];
    [self showRegionAlert:@"Exiting Region" forRegion:region.identifier];
}

- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
    NSLog(@"Started monitoring %@ region", region.identifier);
}
如有任何帮助,我将不胜感激

问候,,
M.

iphone>4即使不是最好的消费者GPS接收器,也是最好的之一。精度约为3-5米。绝对不需要为您的应用程序使用外部GPS设备! 只有当你需要0.5米的精度,并且愿意支付5000美元购买多相位GPS设备时,这种情况才会得到改善

你的主要问题是软件。应用程序的GPS精度必须设置为“CLLAccuracyBestForNavigation”。单独的区域监控可以节省电池,但并不总是(或从不?)使用GPS

更新

如果你想要精确的区域监控,你必须自己编写区域检测算法,与苹果不同的是,只使用GPS。然后,仍然不需要外部Gps。

您正在使用区域监视方法及其回调。添加外部GPS不会帮助您提高精度,因为这些方法依赖于内部操作系统位置更新。主要来自蜂窝网络和(主要)无线网络。当GPS因素加入其中时,该设备可能会忽略来自外部GPS的所有信息,只有为利用它编写的应用程序才能发挥作用

区域监控可以非常出色,除非不是这样。如果你的设备没有手机数据,你会受到攻击。(ipodtouch和ipadwifi)如果你关闭了Wifi,或者你在一个几乎没有接入点的农村地区,恐怕就地区监控而言,你已经死定了

听上去,如果你真的想走这条路,你必须编写自己的自定义方法,从外部设备中提取位置,并手动监控更新。不太理想


为这个坏消息感到抱歉。希望这能帮助你把时间花在你所遇到的问题上,而你不会浪费时间去做一些可能永远都不会成功的事情。祝你好运。

谢谢你的回答。我已经设置了所需的准确度,但仍然无法获得准确的区域监控:-(void)initializeLocationManager{//如果(![CLLocationManager locationServicesEnabled]){[self-showAlertWithMessage:@“您需要启用位置服务才能使用此应用程序,请检查以确保位置服务已启用。”];return;}为什么要从外部gps获取位置?它并不比内在的更精确。他需要通过使用和他自己的区域监控软件启用和使用内部Gps,仅依靠Gps!这很好,但OP表示,他们正在尝试使用基于外部GPS的内部区域监测方法。那是行不通的。如果他们想用自己的方法来监测基于外部GPS的区域,那就好了,但问题不是这样的。问题是:“区域到15-20米,精度更高。”;iphone的GPS芯片有3m;故障不是芯片,而是苹果的区域监控软件。因此,将自己的区域监控软件与外部GPS配合使用是没有意义的:唯一的意义是使用自己的带有内部芯片的RGEON sw