从 CLGeocoder 获取当前城市和国家?

     2023-04-14     248

关键词:

【中文标题】从 CLGeocoder 获取当前城市和国家?【英文标题】:Get current city and country from CLGeocoder? 【发布时间】:2013-01-12 15:11:22 【问题描述】:

我一直在互联网上试图找出如何从CLGeocoder 获得城市和国家。我可以轻松获得经度和纬度,但我需要城市和国家/地区信息,而且我不断遇到不推荐使用的方法等,有什么想法吗?它基本上需要获取位置,然后有一个NSString 代表国家,NSString 代表城市,所以我可以使用它们来查找更多信息或将它们放在标签上等。

【问题讨论】:

【参考方案1】:

您需要稍微修改一下您的术语 - CLGeocoder(和大多数地理编码器)本身不会给您一个“城市” - 它使用诸如“行政区”、“子行政区”等术语。CLGeocoder object 将返回一个 CLPlacemark 对象数组,然后您可以查询所需的信息。您初始化 CLGeocoder 并使用位置和完成块调用 reverseGeocodeLocation 函数。这是一个例子:

    if (osVersion() >= 5.0)

    CLGeocoder *reverseGeocoder = [[CLGeocoder alloc] init];

    [reverseGeocoder reverseGeocodeLocation:self.currentLocation completionHandler:^(NSArray *placemarks, NSError *error)
     
         DDLogVerbose(@"reverseGeocodeLocation:completionHandler: Completion Handler called!");
         if (error)
             DDLogError(@"Geocode failed with error: %@", error);
             return;
         

         DDLogVerbose(@"Received placemarks: %@", placemarks);


         CLPlacemark *myPlacemark = [placemarks objectAtIndex:0];
         NSString *countryCode = myPlacemark.ISOcountryCode;
         NSString *countryName = myPlacemark.country;
         DDLogVerbose(@"My country code: %@ and countryName: %@", countryCode, countryName);

     ];
    

现在请注意,CLPlacemark 没有“城市”属性。完整的属性列表可以在这里找到:CLPlacemark Class Reference

【讨论】:

很好的答案。澄清一下,您可以通过访问CLPlacemark *myPlacemarkobject 的addressDictionary 属性中的“City”键来获取城市名称:即myPlacemark.addressDictionary[@"City"],但这在阅读您提到的文档后应该很明显:) 嘿,很酷,谢谢你 - 是的,看起来很漂亮,遵循地址簿的字段。还有一种很酷的方法可以拼凑完整的地址。谢谢! 谢谢这是一个很好的获取城市名称的代码,使用CLGeocoder,实现起来非常简单快捷... 与地标关联的城市在“locality”键下。【参考方案2】:

您可以使用此 (Swift 5) 获取城市、国家和 iso 国家/地区代码:

private func getAddress(from coordinates: CLLocation) 
    CLGeocoder().reverseGeocodeLocation(coordinates)  placemark, error in
        guard error == nil,
            let placemark = placemark
        else
        
            // TODO: Handle error
            return
        

        if placemark.count > 0 
            let place = placemark[0]
            let city = place.locality
            let country = place.country
            let countryIsoCode = place.isoCountryCode
        
    

【讨论】:

仅以英文获取 CLGeocoder 值

】仅以英文获取CLGeocoder值【英文标题】:GetCLGeocodervaluesonlyinenglish【发布时间】:2015-01-1915:19:32【问题描述】:我怎样才能从CLGeocoder中获取所有值(国家、城市(重要)和通道),并且只使用英语并忽略设备的语言?我的代码... 查看详情

无法通过当前经纬度快速获取城市名称

...布时间】:2018-08-2221:11:13【问题描述】:我正在尝试使用CLGeocoder().reverseGeocodeLocation从我当前的位置坐标中获取城市名称。它给了我国家名称、街道名称、州名和许多其他信息,但没有城市。我的代码有什么问题吗?这是我的代... 查看详情

当城市名称等于某个国家/地区的名称(不仅如此)时,CLGeocoder 返回错误的结果

...当城市名称等于某个国家/地区的名称(不仅如此)时,CLGeocoder返回错误的结果【英文标题】:CLGeocoderreturnswrongresultswhencitynameisequaltosomecountry\'sname(andnotonly)【发布时间】:2015-07-1001:38:28【问题描述】:在我的一个应用程序中,... 查看详情

CLGeocoder 反向地理编码失败,错误域=NSURLErrorDomain 代码=-1000 -

】CLGeocoder反向地理编码失败,错误域=NSURLErrorDomain代码=-1000-【英文标题】:CLGeocoderreversegeocodingfailswithErrorDomain=NSURLErrorDomainCode=-1000-【发布时间】:2014-03-1916:42:10【问题描述】:使用CLLocation对象(内容例如纬度=48.196169,经度=11.... 查看详情

如何用街道、城市和国家显示手机的当前位置

...间】:2013-02-0211:08:57【问题描述】:以下是我编写的用于获取手机当前位置的代码。它显示当前位置以及手机所在的城市和国家/地区。但我需要显示街道地址位置。请尽快提出建议。<!DOCTYPEhtml><html><he 查看详情

获取用户国家和城市名称并在谷歌地图上定位

】获取用户国家和城市名称并在谷歌地图上定位【英文标题】:Getusercountryandcitynameandlocateongooglemap【发布时间】:2019-07-2308:51:38【问题描述】:我想在谷歌地图上显示用户的当前位置和国家名称,城市名称我尝试显示未定义的国... 查看详情

获取 CLGeocoder 返回的确切州/省字符串

】获取CLGeocoder返回的确切州/省字符串【英文标题】:Gettingtheexactstringsofstates/provincesthatCLGeocoderreturns【发布时间】:2012-06-1400:11:49【问题描述】:在哪里可以找到CLGeocoder在反向地理编码时返回的州和省列表?必须有一个列表来... 查看详情

当前城市为零;

...:我正面临一个奇怪的问题,我试图使用反向地理编码器获取当前的城市、州和国家。州和国家都很好,但城市是“零”。谁能帮帮我。我正在使用以下代码:-(void)reverseGeocoder:(MKReverseGeocoder*)geocoderdidFindPlacemark:(MKPlacemark*)place 查看详情

如何从reverseGeocodeCoordinate获取国家、州、城市?

】如何从reverseGeocodeCoordinate获取国家、州、城市?【英文标题】:Howtoobtaincountry,state,cityfromreverseGeocodeCoordinate?【发布时间】:2013-02-0818:27:24【问题描述】:GMSReverseGeocodeResponse包含-(GMSReverseGeocodeResult*)firstResult;其定义如下:@interf... 查看详情

如何从不同的表中以最优化的方式获取国家、州、城市名称

】如何从不同的表中以最优化的方式获取国家、州、城市名称【英文标题】:Howtogetcountry,state,citynameinthemostoptimizedwayfromdifferenttables【发布时间】:2019-09-0613:18:06【问题描述】:我有一张员工表、城市国家和州表。我的员工表存... 查看详情

React native 获取国家和城市

】Reactnative获取国家和城市【英文标题】:Reactnativegetcountryandcity【发布时间】:2021-07-0213:00:32【问题描述】:我需要为我的应用获取用户国家和城市。我可以使用此代码获取纬度并登录。如何在本地反应中获得城市和国家importGet... 查看详情

如何在 Flutter 中使用 OpenWeather API 的时区属性获取任何城市/国家的当前时间?

】如何在Flutter中使用OpenWeatherAPI的时区属性获取任何城市/国家的当前时间?【英文标题】:howtogetthecurrenttimeforanycity/countrybyusingtimezonepropertyfromOpenWeatherAPIinFlutter?【发布时间】:2020-12-1420:46:13【问题描述】:我通过使用OpenWeather... 查看详情

使用 CLGeocoder 将城市和州信息添加到 MKAnnotation

】使用CLGeocoder将城市和州信息添加到MKAnnotation【英文标题】:AddingCityandStateInformationtoMKAnnotationUsingCLGeocoder【发布时间】:2011-12-2301:49:11【问题描述】:我正在尝试将城市和州信息添加到MKAnnotation,但在将其添加到注释之前,数... 查看详情

如何使用pygeoip从国家、地区代码获取纬度、经度

】如何使用pygeoip从国家、地区代码获取纬度、经度【英文标题】:Howtogetlatitude,longtitudefromcountry,regioncodeusingpygeoip【发布时间】:2014-05-0211:20:06【问题描述】:我有这样的GeoIP城市和地区代码:region_code:H9country_code:GB我拥有的城市... 查看详情

如何在java中的url中使用当前城市和国家?

】如何在java中的url中使用当前城市和国家?【英文标题】:howtousecurrentcityandcountryinurlinjava?【发布时间】:2021-10-1908:56:36【问题描述】:我正在开发一个项目,该项目通过基本url中的当前位置通过JSONAPIurl提供一些数据我的基本... 查看详情

从城市名称获取纬度和经度

】从城市名称获取纬度和经度【英文标题】:Getlatitudeandlongitubefromcityname【发布时间】:2010-08-1810:08:59【问题描述】:我想在UISearchBar输入城市名,然后地图会跳转到当前城市。怎么做?【问题讨论】:同名的多个城市要如何处... 查看详情

从国家、州、城市和每个城市纬度/经度的数据库查询构建 JSON

】从国家、州、城市和每个城市纬度/经度的数据库查询构建JSON【英文标题】:BuildingaJSONfromadatabasequeryofcountry,state,cityandeachcitieslatitude/longitude【发布时间】:2020-05-1622:04:00【问题描述】:我有一张表格,上面有国家、州、城市、... 查看详情

机场代码 - iOS

...cation:fromLocation:中的地标获取国家/地区代码,如下所示:CLGeocoder*geoCoder=[[CLGeocoderalloc]init];[g 查看详情