【问题标题】:IOS get location with CLLocationManager from lat/longIOS 使用 CLLocationManager 从 lat/long 获取位置
【发布时间】:2012-09-06 18:53:58
【问题描述】:

我正在尝试从我之前在应用程序中获得的纬度/经度值反转地理编码位置,我想从这个坐标中找到城市名称、国家名称和 ISO。

我目前正在使用 CLLocationManager 通过以下代码获取实际位置信息:

//Auto geolocation and find city/country
locationManager.delegate=self;

//Get user location
[locationManager startUpdatingLocation];
[self.geoCoder reverseGeocodeLocation: locationManager.location completionHandler: 
 ^(NSArray *placemarks, NSError *error) {

     //Get nearby address
     CLPlacemark *placemark = [placemarks objectAtIndex:0];

     //String to hold address
     locatedAtcountry = placemark.country;
     locatedAtcity = placemark.locality;
     locatedAtisocountry = placemark.ISOcountryCode;

     //Print the location to console
     NSLog(@"Estas en %@",locatedAtcountry);
     NSLog(@"Estas en %@",locatedAtcity);
     NSLog(@"Estas en %@",locatedAtisocountry);

     [cityLabel setText:[NSString stringWithFormat:@"%@,",locatedAtcity]];
     [locationLabel setText:[NSString stringWithFormat:@"%@",locatedAtcountry]];

     //Set the label text to current location
     //[locationLabel setText:locatedAt];

 }];

它工作得很好,但是,可以从我已经保存在设备中的 Long/Lat 值做同样的事情,而不是像实际代码那样使用当前位置?

更新及解决方案:

感谢 Mark 的回答,我终于使用以下代码从保存的坐标中获取信息:

 CLLocation *location = [[CLLocation alloc] initWithLatitude:37.78583400 longitude:-122.40641700];

[self.geoCoder reverseGeocodeLocation: location completionHandler: 
 ^(NSArray *placemarks, NSError *error) {

     //Get nearby address
     CLPlacemark *placemark = [placemarks objectAtIndex:0];

     //String to hold address
     locatedAtcountry = placemark.country;
     locatedAtcity = placemark.locality;
     locatedAtisocountry = placemark.ISOcountryCode;

     //Print the location to console
     NSLog(@"Estas en %@",locatedAtcountry);
     NSLog(@"Estas en %@",locatedAtcity);
     NSLog(@"Estas en %@",locatedAtisocountry);

     [cityLabel setText:[NSString stringWithFormat:@"%@",locatedAtcity]];
     [locationLabel setText:[NSString stringWithFormat:@"%@",locatedAtcountry]];

     //Set the label text to current location
     //[locationLabel setText:locatedAt];

 }];

【问题讨论】:

    标签: ios cllocationmanager


    【解决方案1】:

    是的。使用您保存的纬度/经度值使用initWithLatitude:longitude: 方法创建CLLocation 对象,并将其传递给reverseGeocodeLocation:

    我很惊讶您说这是有效的(尽管,如果您在模拟器上,无论如何都会模拟位置服务,这可能是原因)因为当您调用 startUpdatingLocation 时,您的 CLLocationManagerDelegate 方法的实现就像 @ 987654326@ 被呼叫。 (你实现了这些对吗?)只有当这个(和其他)委托方法被调用时,你才能确定你已经成功地确定了用户的位置。

    您可能需要阅读 Apple 记录的 CLLocationManagerDelegate 协议和 Location Services 最佳实践。

    【讨论】:

      猜你喜欢
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多