将MKMapView点移动到像素坐标

时间:2011-08-15 10:44:02

标签: iphone ios map mapkit mkmapview

我有一个简单的问题。我使用自定义视图作为我的地图视图的标注附件。我有一些问题,让注释移动到所述视图的右下角。我目前正在尝试获得所选注释的CGPoint坐标,但除此之外,我已经画了一个空白任何帮助将不胜感激。

我正在使用的当前代码(我知道它不正确是:)

   CGPoint bottomLeftPoint = CGPointMake(xOffset,[self.internalAnnotationCallout view].frame.size.height);
CLLocationCoordinate2D bottomLeftCoord = [self.branchLocation convertPoint:bottomLeftPoint toCoordinateFromView:self.branchLocation];
MKCoordinateSpan span = {latitudeDelta: kMapMultiLatDelta, longitudeDelta: kMapMultiLatDelta};
  MKCoordinateRegion region = {bottomLeftCoord, span};
 [self.branchLocation setRegion:region animated:YES];
//[self.branchLocation setCenterCoordinate:newCenterCoordinate animated:YES];

1 个答案:

答案 0 :(得分:7)

编辑:

好的,所以我稍微弄乱了这一点,并且能够将一些似乎有效的东西放在一起,希望我现在真正了解你想要实现的目标!

- (void)shiftToCorner{
    //ignore "Annotation", this is just my own custom MKAnnotation subclass
    Annotation *currentAnnotation = [[mapView selectedAnnotations] objectAtIndex:0];
    [mapView setCenterCoordinate:currentAnnotation.coordinate];

    CGPoint fakecenter = CGPointMake(20, 20);
    CLLocationCoordinate2D coordinate = [mapView convertPoint:fakecenter toCoordinateFromView:mapView];
    [mapView setCenterCoordinate:coordinate animated:YES];
}

让我快速解释一下这是做什么的;假设您希望注释移动到距右边缘20个点,距离地图视图底部边缘20个点的位置。如果你考虑一下,如果当前注释位于地图视图的中心,那么到这一点的距离与到达(20,20)的距离相同。这意味着我们可以将注释发送到这一点,首先将我们的地图视图置于注释中心,然后设置动画为(20,20)。