SpeceusSerElocation إرجاع دبوس بدلا من النقطة الزرقاء في محاكاة iPhone

StackOverflow https://stackoverflow.com/questions/1853144

سؤال

هذا هو بلدي -mapView:viewForAnnotation الطريقة التي تنقط المسامير عند إنشاء طرق عرض توضيحية. ولكن عندما وضعت mapView.showsUserLocation = YES; في -viewDidLoad, ، أحصل على دبوس انخفض على حلقة لانهائية (متوقعة - في محاكاة) وليس النقطة الزرقاء العادية.

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
     MKAnnotationView *anno = nil;
     //create a pin annotation view
MKPinAnnotationView  *pin=[[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"]autorelease];

    [pin setPinColor:MKPinAnnotationColorRed];
    pin.animatesDrop=YES;
    pin.canShowCallout = YES;
    pin.calloutOffset = CGPointMake(-5, 5);
    anno = pin;
    return anno;
}

كيف يمكنني الحصول عليها لإسقاط دبابيس وإظهار النقطة الزرقاء كذلك؟

شكرًا

هل كانت مفيدة؟

المحلول

بسيطة حقا لإصلاح، على الرغم من أنه غير متأكد إذا كانت هذه هي الطريقة الصحيحة للقيام بذلك ...

if (annotation == mapView.userLocation){
    return nil; //default to blue dot
}

نصائح أخرى

على غرار الإجابة الأخرى، إليك شيء قريب:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{
    NSString *annotationType = [NSString stringWithCString:object_getClassName(annotation)];
    if ([annotationType compare:@"NSKVONotifying_MKUserLocation"] == 0)
        return nil;
    ...
}

بالطبع، استخدم شيئا مثل هذا على مسؤوليتك الخاصة. يمكن أن تتوقف عن العمل غدا إذا قررت Apple تغيير هذا الاسم.

غالبا ما تستخدم صفك التوضيحي الخاص بك للبحث عن المعلومات المتعلقة بالتعليق التوضيحي. في هذه الحالة، للتعامل مع التعليقات التوضيحية الخاصة بك فقط، استخدم شيئا مثل

if ([annotation isKindOfClass:[MapLocation class]]) {}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top