为什么MKMapView没有显示当前位置的红色引脚



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
}

编辑:如果您的委托方法没有在设备上调用,我猜可能是某个地方内存泄漏了。在模拟器中,内存是你正在使用它的计算机的内存,但在设备上,这更受限制。

最新更新