如何通过iphone应用程序中的代码获取用户的当前位置?

我想从我的iPhone应用程序获取用户的当前位置。 我想在我的应用程序中显示用户的当前位置,如国家名称,纬度,经度信息。 而且我也想显示在谷歌地图的位置。 我也试过谷歌search,但无法得到确切的答案。 我得到的信息是在我的应用程序中使用CLLocationManager来跟踪位置。 我如何使用这个? 我已经从苹果文档下载了一个示例应用程序。 这里是链接: https : //developer.apple.com/library/ios/#samplecode/LocateMe/Introduction/Intro.html

你能帮我吗? 提前致谢。

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

首先创build一个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.longitudeuserCoord.latitude

是的,你可以使用CLGeoCoder。 但CLGeaCoder将不会为印度等其他国家提供美国以外的地理位置信息。因此,最好使用Google的反向地理编码SVGeoCoder 。 SVGeoCoder与goolePlaceAPI有很好的实现。