我正在开发一个iPhone应用程序,我想在其中找到任何地方的纬度,经度和时区细节。
我如何一次获得所有这些细节。
我们可以轻松找到纬度和经度,但我们如何才能获得该地点的确切时区?
有人可以指导我吗?
感谢。
答案 0 :(得分:3)
看起来你想要这个: -
NSString *timeZoneName = [[NSTimeZone localTimeZone] name];
为我返回"Asia/Kolkata"
。
如果您使用的是systemTimeZone
,那么它代表系统(设备)本身使用的时区。
localTimeZone
返回一个对象,该对象表示应用程序的当前默认时区。
使用此API获取数据并传递lat和long值。
答案 1 :(得分:1)
您可以使用CoreLocation获取经度和纬度。
将此添加到您希望纬度和经度的.h类中。
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface CoreLocationViewController : UIViewController <CLLocationManagerDelegate> {
CLLocationManager *locationManager;
}
@property (retain, nonatomic) CLLocationManager *locationManager;
@end
在你的.m文件中
#import "CoreLocationViewController.h"
@implementation CoreLocationViewController
@synthesize locationManager;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[self setLocationManager:[[CLLocationManager alloc] init]];
[locationManager setDelegate:self];
[locationManager setDistanceFilter:kCLDistanceFilterNone];
[locationManager setDesiredAccuracy:kCLLocationAccuracyHundredMeters];
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"My Latitude %f",newLocation.coordinate.latitude);
NSLog(@"My Latitude %f",newLocation.coordinate.longitude);
}
对于当前的TimeZone,您可以使用
NSTimeZone* currentTimeZone = [NSTimeZone systemTimeZone];
NSDateFormatter *dateFormatter = [dateFormat setTimeZone:currentTimeZone];
NSDate *rightNow = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:rightNow];
答案 2 :(得分:1)
从CLLocation获取NSTimeZone:https://github.com/Alterplay/APTimeZones此实用程序在没有3d派对服务的设备上本地工作。
答案 3 :(得分:0)
您可以使用
从任何设备获取时区 NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
答案 4 :(得分:0)
您从CLLocationManager获取位置,您还可以查看Geonames.org
这是一个免费的网络服务,允许您从长/ lat获取大量信息
他们还为GeoNames Webservices库提供免费(和开源)Java客户端(还提供了其他语言的库:ruby,python,perl,lisp ...)
以下是您可以从long / lat获得的一些信息:(complete list of webservices here)
查找最近的地址
查找最近的交点
查找附近的街道
海拔高度时区
答案 5 :(得分:0)
如果你想知道在这种情况下使用api你可以使用这个api但是在这个api中你首先使用CLLocationManager
类找到你的纬度和经度,然后输入这个api。
http://ws.geonames.org/timezone?lat=# {LAT}&安培; LNG =#{LNG}
阅读谷歌文档以获取更多api .....
https://developers.google.com/maps/documentation/timezone/
我希望它可以帮到你
答案 6 :(得分:0)
iOS 5添加了CLGeocoder类,该类可以执行所需的查找。它异步运行(我想它是在某处查询服务器),但是您为其指定了位置,并且为您提供了大量信息,包括时区。这个问题是针对Objective C的,但我将使用Swift进行回答。由于API相同,因此Objective C版本应该易于导出。
这是一个Swift Playground片段,用于查找英国的位置:
import CoreLocation
let location = CLLocation(latitude: 51, longitude: -0.1)
let geocoder = CLGeocoder()
geocoder.reverseGeocodeLocation(location) { (placemarks, error) in
if let error = error {
print(error.localizedDescription)
return
}
if let placemarks = placemarks {
for placemark in placemarks {
print(placemark.name ?? "no name")
print(placemark.locality ?? "no city")
print(placemark.administrativeArea ?? "no state/province")
print(placemark.country ?? "no country")
print(placemark.timeZone?.abbreviation() ?? "no time zone")
}
}
}
这是输出:
1234 A Street Address
Haywards Heath
England
United Kingdom
GMT+1
我有意更改了上面输出中的地址行,以防止垃圾邮件发送者刮擦它,并开始征求我任意选择坐标的可怜灵魂。