РЕДАКТИРОВАТЬ (оригинальный ответ ниже)
Я начал GitHub репозиторий, чтобы сделать точно так, как описано ниже: https://github.com/inspector-g/getloc
Из-за ограниченного времени сегодня было проще / быстрее просто использовать типичные приемы геолокации внешнего IP. Он отлично работает на всех машинах, на которых я его тестировал. Тем не менее, я разместил все необходимые заглушки CoreLocation для будущего использования. Если у меня будет больше времени на этой неделе, я мог бы внедрить сторонний MapKit для Mac OS X (как упомянуто ниже).
Оригинальный ответ
Для этого нет встроенных программ командной строки. Вы можете сделать это самостоятельно, создав программу командной строки Cocoa в XCode следующим образом ...
Начиная с 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).
Однако, чтобы восполнить пробел, была выпущена довольно приличная библиотека, соответствующая функциям MapKit на iOS: http://github.com/Oomph/MacMapKit
Он на самом деле соответствует функциям MapKit и довольно неплохо работает. Желаем удачи:)