2010-03-16 2 views

ответ

5

Вы ищете API «CoreLocation».

Вот a tutorial

+0

Спасибо, Дэвид ... –

17

Существует (как всегда для базовой функциональности) полная документация на сайте разработчика, и вы можете найти this example полезных;

Ключевыми моментами для запоминания являются:

1) Как только вы начинаете получать обновления местоположения, они поступают асинхронно, и вам нужно реагировать на них по мере их поступления. Проверьте точность и временные метки, чтобы решить, хотите ли вы использовать это местоположение.

2) Не забудьте прекратить получать обновления, как только вы захотите (это может быть не первый), иначе вы разрядите время работы от батареи.

3) Первое место, возвращенное вам, часто является LAST CACHED, и телефон сообщит об этом месте с той же (возможно высокой) точностью, с которой он столкнулся, когда он получил исправление раньше. Таким образом, вы можете получить исправление, которое утверждает, что оно является точным до 10 метров, но оно было фактически получено вчера, когда вы были вдали от своего текущего местоположения. Девиз этого НЕ ЗАБЫВАЙТЕ, ЧТОБЫ ПРОВЕРИТЬ ТЕМПЕРАТУР - это говорит вам, когда было исправлено исправление местоположения. Here's an example of how to check the timestamp.

Надеюсь, что это поможет.

+0

Спасибо, Роджер, поймаем вас после попытки с вашим примером –

+2

Ссылка на документацию разработчика сломана, поэтому я ее исправил. Должен сказать, что 3-й пункт о кэшировании местоположений - это то, что многие разработчики забывают и, безусловно, отличный момент! +1 для этого. Я обновляю сообщение @ Roger, чтобы указать, как следует также проверять метки времени. – javatarz

1

скачать этот example он покажет вам текущее местоположение

-2

Реальное решение можно найти здесь. Z5 Concepts iOS Development Code Snippet

Это просто требует немного кодирования.

- (IBAction)directions1_click:(id)sender 
{ 
    NSString* address = @"118 Your Address., City, State, ZIPCODE"; 
    NSString* currentLocation = @"Current Location"; 
    NSString* url = [NSStringstringWithFormat: @"http://maps.google.com/maps?saddr=%@&daddr=%@",[currentLocation stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    UIApplication *app = [UIApplicationsharedApplication]; 
    [app openURL: [NSURL URLWithString: url]]; 
} 
0

Если вам просто нужно, чтобы получить текущее местоположение устройства, используя Core Location непосредственно требует много кода, потому что вы должны обращаться с задержкой до GPS устройств не имеет точное исправление на текущем месте, которое занимает количество секунд. (API-интерфейс CLLocationManager, как представляется, создан для приложений, которые нуждаются в постоянном обновлении местоположения, например, от пошаговых навигационных приложений GPS.)

Вместо прямого использования CLLocationManager я предлагаю вам взглянуть на использование open source component such as INTULocationManager, который будет обрабатывать все это работает для вас и делает тривиально простым запрос одного или нескольких дискретных запросов для текущего местоположения устройства.

0

полный код здесь ниже

1 Дубль рамки импорта дать делегат

в последней строке этого кода self.yourmapreferencename.setRegion ...

// весь код здесь

импорт UIKit импорт MapKit импорт CoreLocation класс ViewController: UIViewController, CLLocationManagerDelegate {

@IBOutlet weak var mapView: MKMapView! 
var locationManager : CLLocationManager! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if CLLocationManager.locationServicesEnabled() 
    { 
     locationManager = CLLocationManager() 
     locationManager.delegate = self 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.requestAlwaysAuthorization() 
     locationManager.startUpdatingLocation() 

    } 

}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 

    let location = locations.last! as CLLocation 
    let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude) 
    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)) 

    self.mapView.setRegion(region, animated: true) 
} 

}

Смежные вопросы