viewForAnnotation没有移动userLocation

时间:2016-07-20 12:38:54

标签: ios objective-c annotations mkuserlocation

我已经实现了- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {方法来更改userLocation Annotation的默认位置。在这个方法中,我使用过:

if (annotation==(mapView.userLocation)) {
    MKAnnotationView *myAnotation = [[MKAnnotationView alloc] init];

    myAnotation.image = self.userPointImage.image; 
    myAnotation.centerOffset = CGPointMake(0, 250);

    return myAnotation;
}
else
{
    return nil;
}

成功将默认userLocation注释移动到中间底部。但由于我也使用了标题,所以在移动手机时,它仍然会从中心旋转地图。

- (void)locationManager:(CLLocationManager *) manager didUpdateHeading:(CLHeading *) newHeading {

    [self.mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:true];
}

但是userLocation注释如下。那怎么办呢?

更新

我发现了this个问题并尝试应用它。但是当我使用标题时它会崩溃应用程序。 在我的didUpdateUserLocation方法中,我添加了[self moveCenterByOffset:CGPointMake(0, 200) from:userLocation.coordinate];,此方法如下:

- (CLLocationCoordinate2D)moveCenterByOffset:(CGPoint)offset from:(CLLocationCoordinate2D)coordinate
{
    CGPoint point = [self.mapView convertCoordinate:coordinate toPointToView:self.mapView];
    point.x += offset.x;
    point.y += offset.y;
    CLLocationCoordinate2D center = [self.mapView convertPoint:point toCoordinateFromView:self.mapView];
    return center;
}

然后在我的didUpdateUserLocation方法中,我将其更新为:MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([self moveCenterByOffset:CGPointMake(0, -250) from:userLocation.coordinate], 800.0f, 200.0f);[mapView setRegion:region animated:NO];,因为我使用了标题,因此动画设置为NO。但是现在当我运行代码时,它开始在中心和新点之间晃动。

1 个答案:

答案 0 :(得分:1)

MKCoordinateRegion region = mapClinicsView.region;

设置&#39; region.center&#39; 它将帮助您导航地图中心位置

确保&#39; region.center&#39;和注释中心的研究和长期是相同的