在移动mapview之后显示标注

我在mapview上有几个注释。 select其中一个(启用了标注)之后,我希望地图以它为中心。 我调用[mapView setCenterCoordinate:coordinate animated:YES];didSelectAnnotationView中实现这一点。

它的工作原理并不总是 – 基本上当没有足够的空间来显示标注时,地图会移动并select标注,但标注不会显示(如果移动是animation,则无关紧要)。 如果我不用setCenterCoordinate自己移动地图,在select一个注释之后,地图会自动移动(只是略微)来显示标注,并且每次都有效。

任何想法如何使它在我的情况下工作? 总结一下,我想把地图放在选定的注释上并显示标注。

通过在didSelectAnnotationView稍微延迟调用setCenter解决它:

 dispatch_time_t dt = dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC); dispatch_after(dt, dispatch_get_main_queue(), ^(void) { [mapView setCenterCoordinate:view.annotation.coordinate animated:YES]; });