2012-02-08 9 views

答えて

0

ここは私のために働くトリックです。タイムゾーン識別子を抽出できるので、このIDをタイムゾーンに使用できます。

CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; 

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

    if (error == nil && [placemarks count] > 0) { 

     placeMark = [placemarks lastObject]; 
     NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"identifier = \"[a-z]*\\/[a-z]*_*[a-z]*\"" options:NSRegularExpressionCaseInsensitive error:NULL]; 
     NSTextCheckingResult *newSearchString = [regex firstMatchInString:[placeMark description] options:0 range:NSMakeRange(0, [placeMark.description length])]; 
     NSString *substr = [placeMark.description substringWithRange:newSearchString.range]; 
     NSLog(@"timezone id %@",substr); 

    }]; 
+1

FYIこれは、Appleのプライベートなフレームワークである – thedeveloper3124

+0

はい、これはリンゴのプライベートフレームワークですが、あなたはネイティブのフレームワークからそれを得れば、それはむしろ、サードパーティのライブラリを使用するよりも最高です。 はこの https://github.com/Alterplay/APTimeZones/issues/2を読んだ後使用してください:iOSのアップデートでこの破壊の –

+0

チャンスは – thedeveloper3124

1

https://github.com/Alterplay/APTimeZonesを参照してください。これは、定義済みのタイムゾーンのローカルデータベースを使用します。

+0

可能性が高いそれはそう+1 –

+0

は注意してください:)私のために働きました –

2

私はAPTimeZonesライブラリを使用しました。私の場合、タイムゾーンと特定の都市の緯度からの国名が必要でした。 私はそれがどのように動作するかを知るために図書館を調べました。実際にはJSON形式のデータベースを持ち、すべてのタイムゾーンとそれに対応するlat longを持っています。 latを入力として受け取り、すべてのタイムゾーンのlatの距離を入力lat longからの距離を比較するデータベースをループします。入力latから最短距離のタイムゾーンを返します。

しかし、大きな国の国境にある都市では、隣国のタイムゾーンを返してくれました。私もそこから国コードを抽出したので、隣国を取得しました。

だから、Appleのネイティブフレームワークはこの場合非常に優れています。

そして以下のコードは私のためにうまくいきました。

CLLocation *location = [[CLLocation alloc] initWithLatitude:your_latitude longitude:your_longitude]; 
CLGeocoder *geoCoder = [[CLGeocoder alloc]init]; 
[geoCoder reverseGeocodeLocation: location completionHandler:^(NSArray *placemarks, NSError *error) 
{ 
CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
NSLog(@"Timezone -%@",placemark.timeZone); 

//And to get country name simply. 
NSLog(@"Country -%@",placemark.country); 

}]; 
+0

これは、サードパーティライブラリのない最も洗練されたソリューションです!私はCLPlacemarkにtimeZoneプロパティがあるとは信じられません:) – PostCodeism

+0

はい、私はそうだったので、共有の価値があった。 – Roohul

関連する問題