У меня есть реализация, где MKMapView
userTrackingMode
имеет значение MKUserTrackingModeFollow
. Это прекрасно работает, и текущее местоположение пользователя также настроено для показа, используя setShowsUserLocation
.
Когда пользователь перемещает маркер usersLocation на карте, он остается в центре экрана, и карта перемещается.
Я хочу перенастроить местоположение пользователя, чтобы оно находилось внизу экрана, а не в центре экрана, нажав кнопку и изменив смещение во время выполнения.
Код ниже не работает. Он выдает правильное смещение, а маркер местоположения пользователя располагается со смещением внизу экрана. Однако после этой точки маркер начинает перемещаться по экрану, и mapView остается неподвижным.
(Я хочу, чтобы перемещался mapView, а не маркер местоположения пользователя)
-(CLLocationCoordinate2D)reCenter:(CLLocationCoordinate2D)coordinate {
// current center
CGPoint point = [self.mapView convertCoordinate:coordinate toPointToView:self.mapView];
NSLog(@"Ang oldPoint %f:%f",point.x, point.y);
// calc offset
NSLog(@"Ang using offset:%f",self.offset);
CGPoint offset = {point.x, point.y + self.offset};
// recenter the map
CLLocationCoordinate2D coord = [self.mapView convertPoint:offset
toCoordinateFromView:self.mapView];
// orientate map to the new coordinate
CGPoint newPoint = [self.mapView convertCoordinate:coord toPointToView:self.mapView];
NSLog(@"Ang newPoint %f:%f",newPoint.x, newPoint.y);
return coord;
}
.. * .. фрагмент 1014 *
// snippet
centerCoord = [self reCenter:self.userCoordinate];
[self.mapView setCenterCoordinate:centerCoord animated:NO];