没有得到合适的纬度经度

时间:2014-09-15 08:48:15

标签: ios objective-c iphone cllocationmanager cllocation

我是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)。

任何帮助都将受到高度赞赏。

2 个答案:

答案 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添加到您的项目中。

导入头文件:

import

声明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;