“显示当前位置”按钮(如 Maps.app)

Posted

技术标签:

【中文标题】“显示当前位置”按钮(如 Maps.app)【英文标题】:"Show current location" Button (Like Maps.app) 【发布时间】:2011-09-09 16:36:47 【问题描述】:

我声明我是初学者,所以请不要错过任何一步! 我使用该代码显示并“跳转”到用户位置:

- (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];
    

但是我想在我按下按钮时请求它。我该怎么做? (记住:我是初学者!)。提前致谢!

【问题讨论】:

【参考方案1】:

您需要做的就是不要在上面调用您的 setRegion,而是在按下按钮时调用它。或者,您可以使用 [locationManager startUpdatingLocation][locationManager stopUpdatingLocation] 开启和关闭更新地图,但保持开启状态会消耗电池电量,因此请谨慎行事。

【讨论】:

我尝试使用此代码但仍然无法正常工作(当我按下按钮时它会冻结)。 -(IBAction)goToLocation MKMapView *mapView; MKUserLocation *myLocation = [mapView userLocation]; CLLocationCoordinate2D coord = [[myLocation location] coordinate]; MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(coord, 350, 350); [mapView setRegion:region animated:YES]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:1]; [UIView commitAnimations]; 去掉对 beginAnimations、setAnimationDuration 和 commitAnimations 的调用。你已经告诉你的 setRegion 调用动画,它会比你在这里做的更好。如果它仍然有问题,请使用调试器,看看它冻结在哪一行。 您可能还想在其中添加这些行: region.span=span; region.center=location;

以上是关于“显示当前位置”按钮(如 Maps.app)的主要内容,如果未能解决你的问题,请参考以下文章

如何在谷歌地图应用程序中从另一个位置显示当前位置?

通过intent-Android打开地图以显示当前位置的方向

当视图在iOS中加载时如何在缩放时显示用户当前位置?

iPad Mapkit - 更改“当前位置”的标题

显示当前位置,以及 iphone 中的另一个位置

为啥 MKMapView 不显示当前位置红色图钉?