我正在开发一个iPhone应用程序,希望能够找到任何地方的纬度、经度和时区信息。
如何同时获取所有这些详细信息呢?
我们可以很容易地找到纬度和经度,但是如何获取该地点的精确时区呢?
请问有人能指导我吗?
谢谢。
我正在开发一个iPhone应用程序,希望能够找到任何地方的纬度、经度和时区信息。
如何同时获取所有这些详细信息呢?
我们可以很容易地找到纬度和经度,但是如何获取该地点的精确时区呢?
请问有人能指导我吗?
谢谢。
NSString *timeZoneName = [[NSTimeZone localTimeZone] name];
下面的代码会返回 "Asia/Kolkata"
。
如果你使用systemTimeZone
,那么它表示设备本身所使用的时区。
localTimeZone
返回一个代表应用程序当前默认时区的对象。
使用此API获取数据并传递经纬度值。
#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);
}
而对于当前的时区,则可以使用
NSTimeZone* currentTimeZone = [NSTimeZone systemTimeZone];
NSDateFormatter *dateFormatter = [dateFormat setTimeZone:currentTimeZone];
NSDate *rightNow = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:rightNow];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
[destinationTimeZone name]
。 - Deepesh Gairola你正在从CLLocationManager获取位置,并且你也在查看Geonames.org
这是一个免费的网络服务,可以让你从经度/纬度获取大量信息
他们还提供了一个免费(并且开源)的Java客户端GeoNames Webservices库(也提供其他语言的库:ruby、python、perl、lisp...)
以下是一些你可以从经度/纬度获取的信息:(完整的网络服务列表在此处)
查找最近的地址
查找最近的交叉路口
查找附近的街道
高程时区
CLLocationManager
类查找您的纬度和经度,然后将其放入此API中。
http://ws.geonames.org/timezone?lat=#{lat}&lng=#{lng}
阅读谷歌文档以获取更多API信息......
https://developers.google.com/maps/documentation/timezone/
希望能对你有所帮助
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
我故意更改了上面输出的地址行,以便垃圾邮件机器人不会爬取它并开始向我随意选择的坐标所代表的可怜灵魂发送推销信息。