我是iOS应用程序开发人员。我正在与位置管理员合作。
我每5秒捕获一次纬度和经度并将CLLocation对象存储在数组中。当我尝试在Map中绘制这些位置时,lat和long不完全正确。
我的代码如下:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{//ios6&+
CLLocation *loc;
NSInteger objCount = [locations count];
if (objCount >= 1) {
loc = [locations objectAtIndex:objCount - 1];
NSArray *Arr_TotalTime = [Str_TotalTime componentsSeparatedByString:@":"];
[ArrayOfLocations addObject:loc];
}
}
任何人都可以通过didupdatelocation方法向我提供更多信息以获取ACTUAL位置(lat,long)。
任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
根据您设置位置管理器的方式,准确度会有所不同。 尝试这样的事情:
_locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = self;
_locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
_locationManager.activityType = CLActivityTypeAutomotiveNavigation;
_locationManager.distanceFilter = kCLDistanceFilterNone;
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *newLocation = [locations lastObject];
NSDate *eventDate = newLocation.timestamp;
NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];
if ((abs(howRecent) <= 5) && (newLocation.horizontalAccuracy > 0) && (newLocation.verticalAccuracy > 0) && (newLocation.horizontalAccuracy < 100) && (newLocation.verticalAccuracy < 100))
{
[ArrayOfLocations addObject:newLocation];
}
else
{
// received bad signal
}
}
答案 1 :(得分:0)
您可以使用CoreLocation获取经度和纬度。
包含框架:
在导航器中单击您的项目。
点击“使用图书馆链接二进制文件”下的加号按钮
将Corelocation添加到您的项目中。
导入头文件:
声明CLLocationManager:
CLLocationManager * locationManager; 初始化locationManager:
- (void)viewDidLoad
{
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locationManager startUpdatingLocation];
}
然后,使用
float latitude = locationManager.location.coordinate.latitude; float longitude = locationManager.location.coordinate.longitude;