から都市と国を取得する方法を見つけようとして、インターネットのいたるところにいましたCLGeocoder
。経度と緯度は簡単に取得できますが、都市と国の情報が必要であり、非推奨のメソッドなどに遭遇し続けています。何かアイデアはありますか? 基本的には場所を取得する必要があり、次にNSString
国とNSString
都市を表す が必要なので、それらを使用して詳細情報を検索したり、ラベルに貼り付けたりできます。
質問する
15872 次
2 に答える
18
用語を少し修正する必要があります。CLGeocoder (およびほとんどのジオコーダー) は「都市」自体を提供しません。「行政区域」、「準行政区域」などの用語を使用します。CLGeocoder オブジェクトは返されます。必要な情報を照会できる 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 には「city」プロパティがないことに注意してください。プロパティの完全なリストは、次の場所にあります: CLPlacemark クラス リファレンス
于 2013-01-29T06:07:49.183 に答える
0
これを使用して、都市、国、および iso 国コードを取得できます (Swift 5):
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
}
}
}
于 2019-10-01T18:06:42.367 に答える