在应用程序开始时,应用程序请求用户的当前位置。 AlertBox弹出关于授予应用程序访问位置服务的权限。我的问题是如何在用户允许位置服务后立即获取位置?
我的代码
- (void)viewDidLoad
{
[super viewDidLoad];
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.distanceFilter = kCLDistanceFilterNone;
self.locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
[self.locationManager startUpdatingLocation];
latitude = [NSString stringWithFormat:@"%f",self.locationManager.location.coordinate.latitude];
longtitude = [NSString stringWithFormat:@"%f",self.locationManager.location.coordinate.longitude];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:[latitude floatValue]
longitude:[longtitude floatValue]
zoom:16];
mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.delegate = self;
mapView.myLocationEnabled = YES;
self.view = mapView;
// Creates a marker in the center of the map.
GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = CLLocationCoordinate2DMake([latitude intValue], [longtitude intValue]);
marker.title = @"Current Location";
marker.map = mapView;
}
一旦允许位置服务,有没有办法获取用户的当前位置? 我的代码仅在用户允许位置服务然后重新启动应用程序时才有效。
我也试过实现下面的代码。但是NSLog
没有出现。
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
CLLocation *loc = locations.lastObject;
double speed = loc.speed;
NSLog(@"speed-----%f ", speed);
}
有什么建议吗?我遗漏了什么吗?
答案 0 :(得分:2)
刚刚提出:
self.locationManager.delegate = self;
这一行之后:
self.locationManager = [[CLLocationManager alloc] init];
注意:强> 确保在头文件中添加了CLLocationManagerDelegate。
答案 1 :(得分:1)
我的回答是一年太晚了,我使用的是Swift 2,但对于其他需要回答的人来说:
您需要更新didUpdateLocations委托中的mapview。请参阅下面的代码。
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.first {
mapUIView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
locationManager.stopUpdatingLocation()
}
}