如何从 CLLocation 变量中提取经度和纬度?

Posted

技术标签:

【中文标题】如何从 CLLocation 变量中提取经度和纬度?【英文标题】:How to extract the longitude and the latitude from a CLLocation variable? 【发布时间】:2013-11-14 19:13:04 【问题描述】:

所以我有一个包含 10 个条目的数组。每个条目都有一个“CustomeObj”类型的对象。在每个对象中,我存储了一个 NSString 和一个 CLLocation var。 (类似于:“John”、“(23.33f, -32.44f))作为地图参考。

现在,我想访问 CLLocation 变量中的这些数字:

NSLog(@"%f", obj.cllVar->latitude);返回 0,0000 但调试器中的真正 lat var 具有实际值。是否有一种方法可以双重连接:“obj.cllVar.lat”,或者是否有另一种方式来拉动经纬度或经度。从那个 cllVar out 中使用不同的操作符

非常感谢。

【问题讨论】:

obj.cllVar->纬度是字符串或浮点类型 【参考方案1】:

只需深入CLLocation 获取包含纬度和经度的 CLLocationCoordinate2D:

CLLocation *location = ...
CLLocationDegrees latitude  = location.coordinate.latitude;
CLLocationDegrees longitude = location.coordinate.longitude;

【讨论】:

【参考方案2】:

locations and maps programming guide 可以为处理设备位置提供很多帮助。 Techtopia 还提供了tutorial 以了解 CLLocationManager 的使用情况。这是一个 sn-p,它引用了一个带有 newLocation.coordinate.latitude 和经度为 newLocation.coordinate.longitude 的 CLLocation 变量(有关更多信息,请参阅来源):

#pragma mark -
#pragma mark CLLocationManagerDelegate

-(void)locationManager:(CLLocationManager *)manager
   didUpdateToLocation:(CLLocation *)newLocation
                  fromLocation:(CLLocation *)oldLocation

     NSString *currentLatitude = [[NSString alloc] 
                  initWithFormat:@"%g", 
                  newLocation.coordinate.latitude];
     latitude.text = currentLatitude;

     NSString *currentLongitude = [[NSString alloc] 
          initWithFormat:@"%g",
          newLocation.coordinate.longitude];
     longitude.text = currentLongitude;

     NSString *currentHorizontalAccuracy = 
              [[NSString alloc] 
             initWithFormat:@"%g",
             newLocation.horizontalAccuracy];
     horizontalAccuracy.text = currentHorizontalAccuracy;

     NSString *currentAltitude = [[NSString alloc] 
                  initWithFormat:@"%g",                                                          
                  newLocation.altitude];
     altitude.text = currentAltitude;

     NSString *currentVerticalAccuracy = 
              [[NSString alloc] 
              initWithFormat:@"%g",
              newLocation.verticalAccuracy];
     verticalAccuracy.text = currentVerticalAccuracy;

     if (startLocation == nil)
            self.startLocation = newLocation;

     CLLocationDistance distanceBetween = [newLocation
            distanceFromLocation:startLocation];

     NSString *tripString = [[NSString alloc] 
           initWithFormat:@"%f", 
           distanceBetween];
     distance.text = tripString;

【讨论】:

以上是关于如何从 CLLocation 变量中提取经度和纬度?的主要内容,如果未能解决你的问题,请参考以下文章

带有纬度和经度的 CLLocation 对象

字符串到 CLLocation 纬度和经度

如何从纬度和经度中提取位置名称

CLLocation 如何实现 Equatable 协议?

如何从 MKMapItem 中提取纬度/经度坐标

如何从谷歌地图自动完成中提取纬度和经度