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

Shell 从命令行以编程方式获取MacBook的城市/州?,shell,command-line,Shell,Command Line,有没有办法通过编程从MacBook获取位置或城市/州?它不需要非常精确,只是想知道它是否可能 没有远程访问GeoIP服务的东西。分为两部分:(有点黑客) 获取您的IP地址: ifconfig | grep "inet addr" | grep -v '127\.0\.0\.1' | tr ':' ' ' | awk '{print $3}' 用表格查找您的地址: 希望这有帮助 编辑(进一步向下的原始响应) 我已经开始进行GitHub回购,具体如下所述: 由于目前时间有限,仅使用典型的外部IP

有没有办法通过编程从MacBook获取位置或城市/州?它不需要非常精确,只是想知道它是否可能


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

分为两部分:(有点黑客)

获取您的IP地址:

ifconfig | grep "inet addr" | grep -v '127\.0\.0\.1' | tr ':' ' ' | awk '{print $3}'
用表格查找您的地址:

希望这有帮助

编辑(进一步向下的原始响应)
我已经开始进行GitHub回购,具体如下所述:

由于目前时间有限,仅使用典型的外部IP地理定位技巧更容易/更快。它在我测试过的所有机器上都能正常工作。但是,我确实放置了所有必要的CoreLocation存根以备将来使用。如果本周我有更多的时间,我可能会为MacOSX实现第三方MapKit(如下所述)

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

从Mac OS 10.6开始,您可以使用
CLLocationManager
获取用户的lat/long位置。在类中,您希望成为位置信息的代表:

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
中的经纬度数据中获取城市、州或其他地理信息?你不知道!苹果没有为MacOSX(仅iOS)提供反向地理编码器

然而,为了填补这一空白,一个与iOS上的MapKit功能相匹配的相当不错的库已经发布:


事实上,它与MapKit的功能相匹配,并且做得相当好。祝你好运:)

(事实上,现在我想起来了,我可能只是制作了这个小程序并将其发布到GitHub上……)