以编程方式从命令行获取MacBook的城市/州?

时间:2012-04-01 17:34:05

标签: shell command-line

有没有办法以编程方式从MacBook获取位置或城市/州?它不一定非常准确,只是想知道它是否可能。

没有远程访问GeoIP服务的东西。

2 个答案:

答案 0 :(得分:1)

分两部分:(有点黑客)

获取您的ipaddress:

ifconfig | grep "inet addr" | grep -v '127\.0\.0\.1' | tr ':' ' ' | awk '{print $3}'

使用表格查找您的地址: http://ipinfodb.com/linux_script.php

希望这有帮助!

答案 1 :(得分:1)

编辑(原始回复进一步下降)
我已经开始使用GitHub回购,完全如下所述:https://github.com/inspector-g/getloc

由于今天的时间有限,使用典型的外部IP地理定位技巧更容易/更快。它在我测试过的所有机器上运行良好。但是,我确实放置了所有必要的CoreLocation存根以供将来使用。如果我本周有更多时间,我可能会为Mac OS X实现第三方MapKit(如下所述)。

原始回复
没有内置的命令行程序来执行此操作。您可以通过在Xcode中构建Cocoa命令行程序来自己创建一个简单的程序,如下所示......

从Mac OS 10.6开始,您可以使用CLLocationManager获取用户的纬度/经度位置。在课堂上,您希望成为位置信息的代表:

locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.delegate = self;
[locationManager startUpdatingLocation];

locationManager是该班级的成员。为了从CLLocationManager接收消息,您的委托类将需要实现以下方法:

-(void) locationManager:(CLLocationManager*)manager
        didUpdateToLocation:(CLLocation*)newLocation
        fromLocation:(CLLocation*)oldLocation;

-(void) locationManager:(CLLocationManager*)manager
        didFailWithError:(NSError*)error;

既然您已经在这些方法中设置并接收了CLLocation个实例,那么如何从CLLocation中的纬度和经度数据中获取城市,州或其他地理信息?你没有! Apple不为Mac OS X(仅限iOS)提供反向地理编码器。

然而,为了填补空白,一个相当不错的库来匹配iOS上MapKit的功能已经发布:http://github.com/Oomph/MacMapKit

实际上,这意味着要匹配MapKit的功能,并且做得非常好。祝你好运:))