كيفية إظهار استدعاء للكائن الذي يطبق بروتوكول MkAnnotation؟

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

  •  11-12-2019
  •  | 
  •  

سؤال

لدي كائن ينفذ بروتوكول MKAnnotation:

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
@interface VoiceMemoryAnnotation : NSObject <MKAnnotation> {
    NSString * blobkey;
}
@property (nonatomic, retain) NSString * blobkey;

-(id)initWithBlobkey:(NSString *) key andCoordinate:(CLLocationCoordinate2D) c;
@end

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

لا يمكنني إجراء annotation.showCallOut=YES لأن "MkAnnotation" لا يحتوي على هذه الخاصية، ولكن MkAnnotationView يمتلكها.كيف يمكنني الحصول على حول هذا؟

لقد حاولت تنفيذ رد اتصال الخريطة "viewForAnnotation" للتحقق من "VoiceMemoryAnnotation" وأحاول إرجاع "MkAnnotationView" جديد وتعيين وسيلة الشرح الخاصة به = YES، لكنني بدأت في الحصول على خطأ تجزئة عندما أفعل ذلك.

أي أفكار ما أفعله خطأ؟

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

المحلول

أولا تحتاج إلى إنشاء كائن التوضيح التوضيحي (الذي يقوم بتنفيذ بروتوكول Mkannotation) وإضافته إلى خريطتك باستخدام شيء مثل giveacodicetagpre.

سيتصل تلقائيا الطريقة التالية التي ستحتاج إلى تطبيقها: giveacodicetagpre.

في هذا التطبيق لن يعمل mkannotationView، يجب أن يكون mkpinannotationView.

نصائح أخرى

لست متأكدًا من أنني أفهم سؤالك تمامًا، لكني أتساءل، هو MKMapViews- (void)selectAnnotation:(id <MKAnnotation>)annotation animated:(BOOL)animated عن ماذا تبحث؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top