MapView正在显示我的当前位置,但没有显示红色引脚(或蓝色圆圈)。此设备上已启用定位服务。然而,红色引脚显示为在模拟器上运行相同的代码。我已经设置了必需的属性:
self.mapView.showsUserLocation = YES;
然而,我使用的是自定义pin,"mapView:viewForAnnotation:"只对每个自定义注释调用,所以看起来这个方法没有对当前位置调用,这就是为什么它没有显示红色pin的原因。然而,很奇怪为什么相同的代码在模拟器上正确运行。
UPDATE刚刚用mapView创建了空的单视图项目。已添加self.mapView.showsUserLocation=YES,但设备上未显示当前位置。但模拟器中显示了一个蓝色圆圈。我在iPhone4上使用iOS 6.1.2。
mapView:viewForAnnotation:
。
来自文档:
如果注释参数中的对象是MKUserLocation类,可以提供一个自定义视图来表示用户的位置。使用默认值显示用户的位置系统视图,返回nil。
在该委托方法的实现中,检查传入的注释的类并相应地继续(返回nil以使用蓝点或返回自定义视图)。
如果它没有接到电话,其他事情正在进行中。
在mapView:viewForAnnotation方法之前添加其他代码
if([a isKindOfClass:[MKUserLocation class]])
return;
也许您每次都返回一个空引脚,所以即使您应该返回用户位置的注释,您也会返回这个空引脚。在您的视图中尝试此操作ForAnnotation委托:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation
{
// When returning nil, it should show the default blue dot
if(annotation == mapView.userLocation) return nil;
// Dequeue the annotations for actual points, do whatever, and return the correct pins
}
编辑:如果您的委托方法没有在设备上调用,我猜可能是某个地方内存泄漏了。在模拟器中,内存是你正在使用它的计算机的内存,但在设备上,这更受限制。