我正在按钮以定期获取我的位置。在实施方面,即使不使用GMSCameraUpdate进行聚焦,设备也会定期让Google Map相机成为地图的中心。您能告诉我要增强什么,以便我们可以定期获取更新的设备位置而无需缩放相机吗?
以下是我在onClick
之后触发缩放的工作 if(self.myMapView.myLocation !=nil){
[self.locationManager stopUpdatingLocation];
[CATransaction begin];
[CATransaction setAnimationDuration:0.2];
GMSCameraUpdate *move = [GMSCameraUpdate setTarget:self.myMapView.myLocation.coordinate zoom:self.myMapView.camera.zoom];
[self.myMapView animateWithCameraUpdate:move];
[CATransaction commit];
}
获取位置后委派
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations{
CLLocation *location = [locations lastObject];
if(location==nil){
location = self.myMapView.myLocation;
}
myDeviceLocation = location;
NSLog(@"adasdads zoom ");
if (markera == nil) {
markera = [[GMSMarker alloc] init] ;
markera.position = CLLocationCoordinate2DMake(22.2855200, 114.1576900);
markera.groundAnchor = CGPointMake(0.5f, 0.97f); // Taking into account walker's shadow
markera.map = self.myMapView;
}else {
[CATransaction begin];
[CATransaction setAnimationDuration:2.0];
markera.position = location.coordinate;
markera.icon = nil;
[CATransaction commit];
}
GMSCameraUpdate *move = [GMSCameraUpdate setTarget:location.coordinate zoom:17];
[self.myMapView animateWithCameraUpdate:move];
}
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)statusX {
NSLog(@"status : %d" , statusX);
if (status == kCLAuthorizationStatusDenied) {
//location denied, handle accordingly
NSLog(@"denied ");
}
else if (statusX == kCLAuthorizationStatusAuthorized) {
//hooray! begin startTracking
NSLog(@"proceed ");
dispatch_async(dispatch_get_main_queue(), ^{
self.myMapView.myLocationEnabled = YES;
});
}else if (statusX == kCLAuthorizationStatusAuthorizedAlways || statusX == kCLAuthorizationStatusAuthorizedWhenInUse) {
self.myMapView.myLocationEnabled = YES;
NSLog(@"gogogo ");
dispatch_async(dispatch_get_main_queue(), ^{
// self.myMapView.myLocationEnabled = YES;
});
答案 0 :(得分:1)
你可以试试这个
从didUpdateLocations
代表处删除此代码:
GMSCameraUpdate *move = [GMSCameraUpdate setTarget:location.coordinate zoom:17];
[self.myMapView animateWithCameraUpdate:move];
将其移至您稍后可以调用的新功能。
在didUpdateLocations
中设置新用户位置,然后拨打[locationManager stopUpdatingLocation]
,然后调用新的自定义功能来设置相机。
在新的自定义功能中,更改:
[self.myMapView animateWithCameraUpdate:move];
要:
CLLocationCoordinate2D target = myLocation; //2d coord
self.myMapView.camera = [GMSCameraPosition cameraWithTarget:target zoom:17];