Можно ли расположить вид карты таким образом, чтобы текущее положение пользователя не находилось в центре вида?
Я рисую карту в виде, охватывающем все пространство экрана устройства.
Поверх этого вида находится другой вид, занимающий нижнюю половину экрана. Вид сверху полупрозрачен, и поэтому пользователь может видеть закрытую карту под ним.
На карте я показываю текущее местоположение пользователя.
Вид карты автоматически позиционирует карту таким образом, что местоположение пользователя центрируется в пределах вида, который, следовательно, является центром устройства экран, однако центр также покрыт видом сверху.
Однако я хотел бы, чтобы местоположение пользователя было центрировано в той части представления карты, которая не покрыта видом сверху.
1 ответ:
Самое простое решение состоит в том, чтобы применить смещение к координате, чтобы немного сдвинуть карту, используя преимущество диапазона области
MKMapView
.CLLocationCoordinate2D newCenter = userCoordinate; newCenter.latitude -= _mapView.region.span.latitudeDelta * 0.50; [self.mapView setCenterCoordinate:newCenter animated:YES];
Значение
0.50
существует только для того, чтобы дать вам пример. Изменяя его, вы можете регулировать смещение.Вы также можете взять текущее положение центра, преобразовать его в
CGPoint
, затем добавить желаемое смещение в пикселях кCGPoint
и преобразовать его обратно вCLLocationCoordinate2D
:UIOffset offset = UIOffsetMake(30.0f, 40.0f); offset.horizontal offset.vertical CGPoint point = [_mapView convertCoordinate:userCoordinate toPointToView:_mapView]; point.x += offset.horizontal; point.y += offset.vertical; CLLocationCoordinate2D newCenter = [_mapView convertPoint:point toCoordinateFromView:_mapView]; [_mapView setCenterCoordinate:newCenter animated:YES];
Надеюсь, что это помогает.