2012-03-14 4 views
1

Я пытаюсь получить текущее местоположение пользователя, используя CLLocationCoordinate2D. Я хочу, чтобы значения были в формате, таком какПолучить текущее местоположение с помощью CLLocationCoordinate2D

CLLocationCoordinate2D start = {-28.078694,153.382844};

Так что я могу использовать их как следующее:

NSString *urlAddress = [NSString 
     stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f", 
     start.latitude, start.longitude, 
     destination.latitude, destination.longitude]; 

Я использовал

CLLocation *location = [[CLLocation alloc]init ]; 
CLLocationDegrees currentLatitude = location.coordinate.latitude; 
CLLocationDegrees currentLongitude = location.coordinate.longitude; 

получить текущий лат & долго.

Но я получаю 0.000 для обоих, когда пытаюсь проверить. Я тестирую iPhone 4s.

Если есть какой-либо образец кода, это будет здорово.

+0

Вы используете 'MKMapView'? –

+0

Как вы получаете свои координаты? Добавьте код того, что вы пробовали до сих пор. – deanWombourne

+0

Я использую CLLocation * location = [[CLLocation alloc] init]; CLLocationDegrees currentLatitude = location.coordinate.latitude; CLLocationDegrees currentLongitude = location.coordinate.longitude; – iOSDev

ответ

15

Добавить рамки CoreLocation первыми, а затем использовать следующий код ... и ваш ViewController должен реализовать CLLocationManagerDelegate

-(void)findCurrentLocation 
{ 

    CLLocationManager *locationManager = [[CLLocationManager alloc] init]; 
    if ([locationManager locationServicesEnabled]) 
    { 
     locationManager.delegate = self; 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
     locationManager.distanceFilter = kCLDistanceFilterNone; 
     [locationManager startUpdatingLocation]; 
    } 


    CLLocation *location = [locationManager location]; 
    CLLocationCoordinate2D coordinate = [location coordinate]; 

    NSString *str=[[NSString alloc] initWithFormat:@" latitude:%f longitude:%f",coordinate.latitude,coordinate.longitude]; 
    NSLog(@"%@",str); 


} 
+3

'[locationManager location]' в этом примере может возвращать 'nil' или очень старое местоположение. Лучший способ получить текущее местоположение - подождать, пока 'locationManager' отправит сообщение обратного вызова своему делегату. Но все же место, переданное с сообщением обратного вызова, может быть старым, поэтому вам всегда нужно проверять отметку времени местоположения. –

+2

locationServicesEnabled устарел в последней версии .. – Rams

+0

Не работает для меня значения широты и долготы, следующие следующим образом: 0.00000 – vijay

2
CLLocationCoordinate2D location = [[[mapview userLocation] location] coordinate]; 
NSLog(@"Location found from Map: %f %f",location.latitude,location.longitude); 

, а также передать ссылку (без mapview0

https://developer.apple.com/library/ios/#samplecode/LocateMe/Introduction/Intro.html

+0

Я не использую mapview, просто добавляя начало и назначение карт Google. А затем отобразите их в UIWebView. Как я могу получить его без mapview? – iOSDev

+0

Да, вы можете обойтись без 'MKMapView'. Это немного сложно понять, почему вы используете 'UIWebView'. –

+0

любой пример кода? – iOSDev

2

Вы должны использовать CLLocationManager, чтобы получить местоположение пользователя. CLLocation только класс объектов используется для обозначения места, он может» т получить местоположение пользователя по его самоуправления.

для получения более подробной информации и пример, пожалуйста, следуйте к Apple, документы на Location Awareness Programming.

+0

любой пример кода, чтобы получить точную широту и длину? – iOSDev

+0

Пожалуйста, ознакомьтесь с документами Apple по адресу [Программирование осведомленности о местоположении] (https://developer.apple.ком/библиотека/ИОС/# документация/UserExperience/Концептуальный/LocationAwarenessPG/CoreLocation/CoreLocation.html). –

7

в AppDelegate .h объявить следующую переменную. и внедрение

CLLocationManagerDelegate delegate. 

CLLocationManager *locationManager; 
CLLocation *currentLocation; 

в файле AppDelegate.h.m напишите следующий код.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

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

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

    self.currentLocation = newLocation; 
    self.currentLat = newLocation.coordinate.latitude; 
    self.currentLong = newLocation.coordinate.longitude; 
} 
+1

self.locationManager = [[CLLocationManager alloc] init]; утечка там в линии. – Rams

0
-(void)findCurrentLocation 
{ 
    if ([CLLocationManager locationServicesEnabled]) 
    { 
     CLLocationManager *locationManager = [[CLLocationManager alloc] init]; 
     locationManager.delegate = self; 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
     locationManager.distanceFilter = kCLDistanceFilterNone; 
     [locationManager startUpdatingLocation]; 
    } 
} 

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { 
    [self setLocation:[[manager location] coordinate]]; 
} 
Смежные вопросы