Как узнать текущее местоположение пользователя по коду в приложении iphone? - PullRequest
1 голос
/ 20 февраля 2012

Я хочу получить текущее местоположение пользователя из моего приложения для iPhone. Я хочу показать текущее местоположение пользователя, например название страны, широту и долготу, в моем приложении. А также я хочу показать местоположение на карте Google также. Я пробовал поиск в Google, но не могу получить точный ответ. Я получил информацию, которая должна была использовать CLLocationManager в моем приложении для отслеживания местоположения. Как мне это использовать? Я скачал один пример приложения из Apple Documents. Вот ссылка: https://developer.apple.com/library/ios/#samplecode/LocateMe/Introduction/Intro.html

Не могли бы вы помочь мне в этом? Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 20 февраля 2012

1) Я получил информацию, которая должна была использовать CLLocationManager в моем приложении для отслеживания местоположения. Как мне это использовать?

в .h файле

#include <CoreLocation/CLLocationManagerDelegate.h>
#include <CoreLocation/CLError.h>
#include <CoreLocation/CLLocation.h>
#include <CoreLocation/CLLocationManager.h>

CLLocationManager   * myLocationManager;

CLLocation          * myLocation;

в .m файле: -

    -(void)findMyCurrentLocation
    {           

    self.myLocationManager = [[[CLLocationManager alloc] init] autorelease];
    [[self myLocationManager] setDelegate:self ];
    [myLocationManager startUpdatingLocation];

    double latitude=34.052234;
    double longitude=-118.243685;

    CLLocation *defaultLocation =[[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
    [self setMyLocation:defaultLocation];
    [defaultLocation release];

    if( [CLLocationManager locationServicesEnabled] )
    {   
        NSLog(@"Location Services Enabled....");
        locationServicesEnabled=TRUE;
        UIAlertView *alert = [ [UIAlertView alloc] initWithTitle:@"Information" 
                                                         message:@"Fetching your current location." 
                                                        delegate:self 
                                               cancelButtonTitle:@"OK" 
                                               otherButtonTitles:nil ];
        [alert release];
    }
    else
    {   
        NSLog( @"Location Services Are Not Enabled...." );
        locationServicesEnabled=FALSE;
        UIAlertView *alert = [ [UIAlertView alloc] initWithTitle:@"Information" 
                                                         message:@"Location service is not enable. Please enable it from settings." 
                                                        delegate:self 
                                               cancelButtonTitle:@"OK" 
                                               otherButtonTitles:nil ];
        [alert release];
     }

        }

    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation: (CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
    {
      [self setMyLocation:newLocation];

    NSString *tempLat = [ NSString stringWithFormat:@"%3.6f" , (newLocation.coordinate.latitude) ];
    NSString *tempLong= [ NSString stringWithFormat:@"%3.6f" , (newLocation.coordinate.longitude)];

    appDelegate.curlat = tempLat;
    appDelegate.curlong = tempLong;
   }

     - (void)locationManager: (CLLocationManager *)manager didFailWithError: (NSError *)error
     {
    printf("\nerror");
    UIAlertView *alert = [ [UIAlertView alloc] initWithTitle:@"Error" 
                                                     message:@"Error while getting your current location." 
                                                    delegate:self 
                                           cancelButtonTitle:@"OK" 
                                           otherButtonTitles:nil ];

    [alert release];
     }

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

Для этого вы можете использовать Google Reverse Geo кодирование ИЛИ MKReverseGeocoder

1 голос
/ 20 февраля 2012

это должно сделать большую часть этого ..

http://www.highoncoding.com/Articles/804_Introduction_to_MapKit_Framework_for_iPhone_Development.aspx

, чтобы получить информацию о месте, где вам нужно использовать MKReverseGeocoder

https://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKReverseGeocoder_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40008323

0 голосов
/ 22 октября 2013

Да, вы можете использовать CLGeoCoder.Но CLGeaCoder не будет предоставлять точную информацию о местоположении за пределами США для других стран, таких как Индия и т. Д. Поэтому лучше использовать Google Reverse Geo coding SVGeoCoder .У SVGeoCoder есть хорошая реализация для определения местоположения с помощью goolePlaceAPI.

0 голосов
/ 20 февраля 2012

Сначала создайте экземпляр MKMapView

Чтобы получить широту и долготу пользователя :

В вашем viewDidLoad

[yourMapView setShowsUserLocation:YES];

CLLocationCoordinate2D userCoord;

userCoord.latitude=map_view.userLocation.coordinate.latitude;
userCoord.longitude=map_view.userLocation.coordinate.longitude;

//NSLogging these on simulator will give you Cupertino or whatever location you set in location simulation.

А для названия страны вам понадобится обратное кодирование, вы можете посмотреть ссылку на класс здесь

https://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKReverseGeocoder_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40008323

ИЛИ

Если MKReverseGeoCoding становится слишком сложным, вы можете использовать обратный геокодер Yahoo

http://where.yahooapis.com/geocode?q=%f,%f&gflags=R&appid=yourAppId,, эти 2% f будут userCoord.longitude и userCoord.latitude.

...