'当前位置'BUTTON复制iPhone中的地图

时间:2011-05-01 09:46:10

标签: iphone

- (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的复制品。

我感谢任何帮助。

1 个答案:

答案 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];
}