在我原來的答覆,我認爲目標是要替換當您使用MKMapView
與showUserLocation = YES
和userTrackingMode = MKUserTrackingModeFollow
你得到閃爍的藍點。因此,我展示瞭如何用圖像或標準引腳替換它。
但事實證明,問題不在於存在顯示當前位置的藍點,而在於它的動畫正在被中斷,並且隨着用戶在地圖上平移和縮放而出現並消失。
如果您撥打removeAnnotations
並刪除所有註釋(包括系統生成的MKUserLocation
註釋),我已經看到該行爲。如果您關閉showUserLocation
並重新開啓,我也看到了這種行爲。
該OP指出,這些情況都不適用,但對於未來的讀者,這些是可能導致此行爲的一些考慮事項。
原來的答覆:
最簡單的答案是,以確保您的控制器是delegate
您MKMapView
,然後定義一個viewForAnnotation
檢測一個MKUserLocation
,並替換爲任何你想要的註解視圖。例如,如果你有你想顯示@"user.png"
圖像,它可能看起來像:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
NSString *annotationIdentifier = @"userlocation";
MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
if (annotationView)
{
annotationView.annotation = annotation;
}
else
{
annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];
annotationView.image = [UIImage imageNamed:@"user.png"];
}
return annotationView;
}
// again, if you had other annotation types, such as MKPointAnnotation,
// handle them here
if ([annotation isKindOfClass:[MKPointAnnotation class]])
{
...
}
return nil;
}
或者,如果你想顯示一個標準的引腳,你可以:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
NSString *annotationIdentifier = @"userlocation";
MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
if (annotationView)
{
annotationView.annotation = annotation;
}
else
{
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];
}
return annotationView;
}
}
// again, if you had other annotation types, such as MKPointAnnotation,
// handle them here
if ([annotation isKindOfClass:[MKPointAnnotation class]])
{
...
}
return nil;
}
來源
2013-05-01 03:08:48
Rob
我認爲這個問題存在一些混淆。請參閱更新的原始帖子。我不想改變用戶的「藍點」。我只是想知道爲什麼它會一直消失,然後在每次地圖滾動/縮放時重新制作動畫。 – JimmyJammed 2013-05-01 23:14:39