使用 iOS 中的核心位置框架工作尝试了不同的方法,但无法通过 GPS 获得准确位置。即使是苹果 map 和谷歌地图也没有指向正确的位置。查看我正在使用的代码片段:
MyLocation class header file
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
@interface MyLocation : NSObject<CLLocationManagerDelegate> {
CLLocationManager *locationManager;
}
MyLocation class m file
#import "MyLocation.h"
#import <CoreTelephony/CTCarrier.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
@implementation MyLocation
@synthesize curLocation;
-(id)init{
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
locationManager.distanceFilter = 0;
//locationManager.distanceFilter = kCLDistanceFilterNone;
//locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[self updateLocation];
curLocation = CGPointZero;
return self;
}
-(void)updateLocation{
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
curLocation = CGPointMake( newLocation.coordinate.latitude, newLocation.coordinate.longitude);
}
最佳答案
正如 krzy 所说,如果 Apple Maps 提供相同类型的结果,那么您正在处理手机上 GPS 的限制。 (这不是很好。)
您可以采取一些措施来获得更好的结果:
当您第一次向位置管理器询问位置更新时,您得到的第一个更新通常是 GPS 上次处于事件状态时的“陈旧”读数。它可以是几小时、几天或几周前的。检查时间戳并丢弃超过几秒的读数。
接下来,检查您获得的读数的水平精度。 “准确性”最好命名为“斜率”或“困惑圈”。您的实际位置可以是具有该半径的圆内的任何位置。高“准确度”读数意味着读数不是很准确。您可能希望丢弃精度读数 > 100 米的读数。
关于ios - 在 iPhone 中获取错误的 GPS 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23828719/