【问题标题】:Not getting appropriate Latitude Longitude没有得到适当的纬度经度
【发布时间】:2014-11-08 17:53:05
【问题描述】:

我是一名 iOS 应用程序开发人员。我正在与 Location Manager 合作。

我每 5 秒捕获一次纬度和经度,并将 CLLocation 对象存储在数组中。当我尝试在地图中绘制这些位置时,经纬度并不完全正确。

我的代码如下:

- (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 方法获取实际位置(纬度、经度)。

任何帮助将不胜感激。

【问题讨论】:

  • 您正在获取实际位置。 CLLocation 包含一个坐标,该坐标包含正确的纬度和经度值。当您尝试在地图上呈现它时,您可能会错误地解释该值(您不是说您正在使用什么地图应用程序或什么 API)。一个典型的错误是使用 lat/long 的小数部分作为分钟/秒值(它不是)。

标签: ios objective-c iphone cllocationmanager cllocation


【解决方案1】:

根据您设置位置管理器的方式,准确性会有所不同。 试试这样的:

位置管理器

_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
    }

}

【讨论】:

    【解决方案2】:

    您可以使用 CoreLocation 获取经度和纬度。

    包含框架:

    在导航器中单击您的项目。

    单击“将二进制文件与库链接”下的加号按钮

    将 Corelocation 添加到您的项目中。

    导入头文件:

    进口

    声明 CLLocationManager:

    CLLocationManager *locationManager; 初始化locationManager:

    - (void)viewDidLoad
    {
        locationManager = [[CLLocationManager alloc] init];
        locationManager.distanceFilter = kCLDistanceFilterNone; 
        locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
        [locationManager startUpdatingLocation];
    }
    

    然后,使用

    浮动纬度 = locationManager.location.coordinate.latitude; float longitude = locationManager.location.coordinate.longitude;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多