MapKit,MKMapView-如何偏移userTrackingMode的用户位置标记MKUserTrackingModeFollow

时间:2018-08-31 06:49:25

标签: ios mapkit

我有一个将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;
} 

.. snippet ..

// snippet
centerCoord = [self reCenter:self.userCoordinate];
[self.mapView setCenterCoordinate:centerCoord animated:NO];

0 个答案:

没有答案