【问题标题】:Find latitude and longitude using CLGeocoder使用 CLGeocoder 查找纬度和经度
【发布时间】:2013-09-12 14:41:51
【问题描述】:

我试图通过提供地址字符串来查找纬度和经度。对于这两个值,我得到 0.000 和 0.000。

我正在使用 MapKit、iOS 7、XCode 5

CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:@"Fairfax, VA" completionHandler:^(NSArray* placemarks, NSError* error){
    for (CLPlacemark* aPlacemark in placemarks)
    {
        CLLocationCoordinate2D coordinate;

        coordinate.longitude = aPlacemark.location.coordinate.longitude;
        coordinate.latitude = aPlacemark.location.coordinate.latitude;

        // updatedCoordinates is a property in my class and I am setting it's value 
        // here and using it in bunch of other places.
        self.updatedCoordinates = coordinate;
    }
}];

【问题讨论】:

  • 您遇到错误了吗?检查 (NSError *error) 的值。此外,您还处于一个循环中,不断覆盖 self.updatedCoordinates 的值。
  • 我对 MapKit 不熟悉,但您查看过NSError 吗?那里可能有错误。
  • 不,我没有收到任何错误。程序根本没有进入 completionHandler。
  • placemarks 是空还是空? (无结果)
  • 您是从活动队列还是运行循环模式执行此操作?如果它在您的邮件线程中,则应调用完成处理程序,即使结果数组为空。你甚至到达for 循环的开始了吗?

标签: iphone ios mapkit clgeocoder


【解决方案1】:
-(void)getPlacemarkInfo:(NSString*)placeName {
    // place name can be paris, etc
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder geocodeAddressString:placeName completionHandler:^(NSArray *placemarks, NSError *error) {
        if (error) {
            NSLog(@"%@", error);    
        } else {
            CLPlacemark *placemark = [placemarks lastObject];
     //     placemark.location.coordinate.latitude; will returns latitude
     //     placemark.location.coordinate.longitude; will returns longitude
        }
    }];
}

【讨论】:

    猜你喜欢
    • 2020-07-18
    • 1970-01-01
    • 2016-05-08
    • 2021-01-17
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多