是否可以定位地图视图,使用户的当前位置不在视图的中心?

时间:2014-02-28 21:57:19

标签: ios mkmapview

我在视图中绘制了一个覆盖整个设备屏幕空间的地图。

在此视图的顶部是另一个占据屏幕下半部分的视图。顶视图是半透明的,因此用户可以看到它下面的覆盖地图。

在地图中,我显示用户的当前位置。

地图视图自动定位地图,使得用户的位置在视图中居中 - 因此是设备屏幕的中心,但顶部视图也覆盖了中心。

但是我希望用户的位置居中于地图视图中未被顶视图覆盖的部分。

1 个答案:

答案 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];

希望它有所帮助。