0

我可以使用在我的 iPad 应用程序中检索当前位置,

CLLocation *location = [[CLLocation alloc] initWithLatitude:[latitude floatValue]   longitude:[longitude floatValue]];
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];

    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error)
     {

         NSLog(@"-----------------Placemark is %@-----------------", placemarks);

          locationLabel.text = placemarks;

     }];

输出是,

-----------------Placemark is ("South Atlantic Ocean, South Atlantic Ocean @<-42.60533670,-21.93128480> +/- 100.00m,    region (identifier <-41.51023865,-31.60774370> radius 4954476.31) <-41.51023865,-31.60774370> radius 4954476.31m"
)-----------------

我可以使用相同的信息来获取城市和国家名称吗?而不是一长串信息?

此外,'locationLabel.text = placemarks' 给出警告,“从 'NSArray*_strong' 分配给 'NSString*' 的指针类型不兼容,我无法解决。

4

2 回答 2

2

您可以获得以下所有地点的详细信息

        placeNameLabel.text     = [placemarks[0] name];
        addressNumberLabel.text = [placemarks[0] subThoroughfare];
        addressLabel.text       = [placemarks[0] thoroughfare];
        neighborhoodLabel.text  = [placemarks[0] subLocality];
        cityLabel.text          = [placemarks[0] locality];
        countyLabel.text        = [placemarks[0] subAdministrativeArea];
        stateLabel.text         = [placemarks[0] administrativeArea];
        zipCodeLabel.text       = [placemarks[0] postalCode];
        countryLabel.text       = [placemarks[0] country];
        countryCodeLabel.text   = [placemarks[0] ISOcountryCode];
        inlandWaterLabel.text   = [placemarks[0] inlandWater];
        oceanLabel.text         = [placemarks[0] ocean];
于 2013-09-03T01:00:11.823 回答
1

是的你可以。
但是你做的有点不对。首先,placemarks是一个数组而不是一个字符串。这就是为什么locationLabel.text = placemarks发出警告。

Placemarks是一个CLPlacemarks数组。这是因为地理编码器可以为一个坐标返回多个结果。在最简单的情况下,其中的第一项应该没问题。

ACLPlacemark具有addressDictionary包含该位置数据的属性。您可以使用ABPerson头文件 定义的地址属性常量访问此数据。

例如:

从数组中获取第一个地标:

CLPlacemark *place = [placemarks objectAtIndex:0];

然后从这个地标获取城市:

NSString *cityName = [place objectForKey: kABPersonAddressCityKey];

不要忘记导入 AVPerson 标头!

于 2012-06-25T05:03:41.493 回答