- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views {
for(MKAnnotationView *annotationView in views) {
if(annotationView.annotation == mv.userLocation) {
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta=0.002;
span.longitudeDelta=0.002;
CLLocationCoordinate2D location=mv.userLocation.coordinate;
region.span=span;
region.center=location;
[mv setRegion:region animated:TRUE];
[mv regionThatFits:region];
}
}
大家好。我试过搜索其他帖子和网站。本质上我想要复制'当前位置'按钮。
使用上面的代码,我可以放大用户的当前位置。然而,这并不完美,有时GPS更新有点迟,或者认为我在其他地方,缩放到那个位置,但随后蓝点将从屏幕移动到我真正的位置。
我想知道有没有办法添加'按钮',就像iphone上的地图一样。它不需要获得新的缩放等,只需移动到新的更新的位置。我的主要代码来源几乎是here的复制品。
我感谢任何帮助。
答案 0 :(得分:0)
使用相同的图形创建自定义注释。此对象必须实现MKAnnotationView
,您必须在mapView:viewForAnnotation:
的方法MKMapViewDelegate
中为其返回自定义视图。如果您想要精确的图形,请使用项目UIKit-Artwork-Extractor来获取它。
保存对注释视图的引用,订阅核心位置更新,并更新调用以下内容的位置:
- (void) animateView:(UIView *)view toPosition:(NSValue*)value
{
CGPoint newCenter = [value CGPointValue];
[UIView animateWithDuration:0.5
animations:^{
view.center = newCenter;
}
completion:^(BOOL finished){ }];
}
然后在注释上设置地图的中心:
- (void)centerMap:(CLLocation *)location {
MKCoordinateRegion region = { { 0.0f, 0.0f }, { 0.0f, 0.0f } };
region.center = location.coordinate;
region.span.longitudeDelta = 0.15f;
region.span.latitudeDelta = 0.15f;
[self.mapView setRegion:region animated:YES];
}