我希望能够在我的视图控制器上没有实际的地图视图的情况下获取当前用户的位置。
目前我有一个地图视图,并通过调用其中一个委托方法获取用户位置....
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
userlatitude = userLocation.location.coordinate.latitude;
userlongitude = userLocation.location.coordinate.longitude;
}
答案 0 :(得分:2)
CLLocationManager是负责保留用户位置值的类。 CLLocationManagerDelegate是另一个从iDevice的GPS获取实时位置数据的类,并通过它的委托方法通知CLLocationManager实例有关位置和各种其他事件的变化。如果您阅读相关文档,将会非常有用。
您必须在班级内实施CLLocationManagerDelegate
协议。
您的班级中还必须有CLLocationManager
个实例来监控位置。
在您的项目中,您还必须在“链接二进制文件”部分中添加“核心位置”框架。
最简单的方法是:
您的.h文件:
@interface MyViewController : UIViewController<CLLocationManagerDelegate>
{
CLLocation * currentLocation;
CLLocationManager * locationManager;
}
@end
你的.m文件:
- (void) viewDidLoad
{
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
[locationManager startUpdatingLocation];
}
//remember to stop before you are done, either here or in view disappearance.
- (void) dealloc
{
[locationManager stopUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations
{
currentLocation = (CLLocation *)[locations lastObject];
}
答案 1 :(得分:0)
很容易,使用CLLocationManager而不是MKMapKit :: user Location方法。 看一下&#34; LocateMe&#34; developer.apple.com上的示例项目。