1

因此,我创建了一个 CLLocationManager,调用它开始更新,将 mapView.showsUserLocation 设置为 YES,并为 userLocation 注释返回 nil。以下是我的 UIMapViewController 中代码的一些片段:

- (void)viewDidLoad
{
     CLLocationManager *locationManager = [[CLLocationManager alloc] init];
     [locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{ 
 CLLocationCoordinate2D userCoordinate = locationManager.location.coordinate;
 [map setCenterCoordinate:userCoordinate animated:YES];
 [map setShowsUserLocation:YES];  
}

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{

 MKAnnotationView *mapIconView = (MKAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier:@"mapIconView"];

 // Don't mess with the user location annotation
     if (annotation == mapView.userLocation)
              return nil;

    // etc.
}     

这一切看起来都很简单。一切正常——地图按原样缩放到我的位置,并且我确认所有方法都按预期调用——但没有蓝点。无论我在哪里或说多少次,都无法为我的一生获得蓝点

mapView.setUserLocation = YES;

我在这里想念什么?

4

5 回答 5

1

这是 mapView.showUserLocation = YES;

您似乎使用了错误的语句 'set' 而不是 'show'。

仅供参考,您不必为了获取用户位置而与位置管理器混淆。mapview.showUserLoction = YES当您设置和加载地图时,Corelocation 会自动触发。

希望能帮助到你 :)

于 2010-10-01T12:03:52.123 回答
1

我遇到了同样的问题,蓝点不会出现。原来它出现了,只是不是我想的地方。

与我的问题类似,您的代码看起来既在处理位置更新,又在要求 MKMapView 跟踪用户位置。请注意,在模拟器中,这是两个不同的位置!当 MKMapView 在模拟器中跟踪用户位置时,它会为您提供 Apple 在加利福尼亚州库比蒂诺的位置,而不管您的“实际”位置如何。

使用此代码并让 MKMapView 跟踪您的代理的位置而不是自己跟踪位置可以显示蓝点:

- (void)mapView:(MKMapView *)theMapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    [theMapView setCenterCoordinate:userLocation.location.coordinate animated:YES];
}

您可能需要放大一点。我使用此博客条目中的方便代码来做到这一点:设置 MKMapView 的缩放级别

于 2011-01-09T16:13:38.700 回答
1

当我这样做时,而不是annotation像你一样检查,我会做一些类似的事情:

if([annotation class] == MKUserLocation.class) {
    return nil;
}
于 2010-08-24T00:03:32.617 回答
1

确保您没有从任何地方的地图中删除所有注释:

例如 [mapView removeAnnotations:mapView.annotations]

于 2013-06-19T13:14:24.790 回答
0

如果您使用的是 iOS 模拟器,则看不到蓝点。我遇到了完全相同的问题,当我开始使用真实硬件尝试我的软件时,蓝点出现了!

于 2010-12-26T14:23:50.940 回答