我在视图中绘制了一个覆盖整个设备屏幕空间的地图。
在此视图的顶部是另一个占据屏幕下半部分的视图。顶视图是半透明的,因此用户可以看到它下面的覆盖地图。
在地图中,我显示用户的当前位置。
地图视图自动定位地图,使得用户的位置在视图中居中 - 因此是设备屏幕的中心,但顶部视图也覆盖了中心。
但是我希望用户的位置居中于地图视图中未被顶视图覆盖的部分。
答案 0 :(得分:8)
最简单的解决方案是将偏移应用于坐标以稍微移动地图,利用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];
希望它有所帮助。