【发布时间】:2013-03-04 03:22:42
【问题描述】:
我使用 MKMapView 显示我当前的位置,我发现当我什么都不做时,我需要大约 15 秒以上才能看到蓝色圆圈并指向地图视图,但如果我在地图视图开始定位,蓝色圆圈和点会立即显示(现在不需要5秒),它们之间有什么区别?我可以缩短在编码中显示蓝色圆圈的时间吗?非常感谢
我创建地图
self.runMapView = [[[MKMapView alloc] initWithFrame:self.bounds] autorelease];
self.runMapView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
self.runMapView.showsUserLocation = YES;
runMapView.delegate = self;
然后:
- (void)mapView:(MKMapView *)mapView_ didUpdateUserLocation:(MKUserLocation *)userLocation
{
if (loc2 == nil)//loc 2 is the ivar i used to track my first location
{
if (CLLocationCoordinate2DIsValid(userLocation.location.coordinate))
{
self.loc2 = userLocation.location;
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate, 2000, 2000);
[runMapView setRegion:region];
}
}
}
我在地图上添加了一些折线视图,当我在开始时将地图视图添加到视图 ctrl 的视图中时,地图视图的 alpha 设置为 0(因为我有一个按钮来决定显示或隐藏地图视图) ,不知道后面的地图更新位置会不会导致这个问题?
【问题讨论】:
-
我在第一秒看到我的应用程序中的蓝点,显示水平精度的圆圈可能稍后出现。
-
你能展示一些你的代码吗?移动地图或加载页面以显示用户位置后,您可能正在做某事。一般来说,开发人员无法做任何事情来加速这个过程,一旦地图是旧的,它需要显示用户的位置,它取决于 iOS 来为你获取它,你不能改变它。您可以做的是在您的应用要求位置时进行更改,也许您这样做太晚了,但如果没有您的一些代码,我们就看不到。
-
好的,我已经贴了相关代码,请看一下
-
好的,我现在似乎对这个问题有了一些线索,起初,定位时间的问题是由于我在创建地图视图后设置了地图视图的 alpha = 0,以及对此的解决方案就是当你重新打开mapview的时候,reset mapview的区域(区域必须和mapview的当前区域不同)这会导致定位重启。