/ / मेरे MKAnnotationView को खींचने के बाद नक्शा खींचना इसके साथ MKAnnotationView को स्थानांतरित नहीं करता है - ios, mkmapview, mkannotationview, mkpinannotationview

मेरे एमकेएनोटेशन व्यू को खींचने के बाद मानचित्र को खींचकर एमकेएनोटेशन व्यू को इसके साथ नहीं ले जाया जाता है - आईओएस, एमकेएमप्यूव्यू, एमकेनोटेशनव्यू, mkpinannotationview

MKPinAnnotationView आपको एक का उपयोग करने की अनुमति नहीं देता हैकस्टम छवि "पिन" के रूप में और उसी समय खींचने में सक्षम करें, क्योंकि जैसे ही आप ड्रैग करना शुरू करेंगे, छवि डिफ़ॉल्ट पिन में वापस बदल जाएगी। इसलिए मैं MKPinAnnotationView के बजाय MKAnnotationView का उपयोग करता हूं।

MKPinAnnotationView के बजाय MKAnnotationView का उपयोग करते समय आपकी कस्टम छवि को आपके "पिन" के रूप में दिखाया गया है, यह ड्रैग एंड ड्रॉप एनीमेशन का समर्थन नहीं करता है जो आपको डिफ़ॉल्ट पिन के साथ मिलता है।

वैसे भी, मेरा मुद्दा यह है कि मैं अपने कस्टम MKAnnotationView को मानचित्र पर एक नए बिंदु पर खींचने के बाद और फिर नक्शे को स्वयं स्थानांतरित करता हूं MKAnnotationView मानचित्र के साथ आगे नहीं बढ़ता है।

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
static NSString *defaultID = @"myLocation";

if([self.annotation isKindOfClass:[PinAnnotation class]])
{
//Try to get an unused annotation, similar to uitableviewcells
MKAnnotationView *annotationView = [self.mapView dequeueReusableAnnotationViewWithIdentifier:defaultID];

//If one isn"t available, create a new one
if(!annotationView)
{
annotationView = [[MKAnnotationView alloc] initWithAnnotation:self.annotation reuseIdentifier:defaultID];
annotationView.canShowCallout = YES;
annotationView.draggable = YES;
annotationView.enabled = YES;
}
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 32, 32)];
imgView.image = self.passableTag.image;
annotationView.leftCalloutAccessoryView = imgView;
annotationView.image = [UIImage imageNamed:[Constants tagIconImageNameForTagType:self.passableTag.type]];
return annotationView;
}
return nil;
}

उत्तर:

जवाब के लिए 9 № 1

मुझे भी यही समस्या थी और मैंने इसे अपने MKAnnotationView वर्ग में "सेटड्रास्ट्रेट" जोड़कर हल किया।

इस एक पुराना समाधान है लेकिन इसने मुझे (iOS8) काम किया है।


जवाब के लिए 15 № 2

ड्रैग को समाप्त करने के बाद बस एनोटेशन व्यू.ड्रास्ट्रेट को MKAnnotationViewDragStateNone पर सेट करें:

    - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState {
if ([view.annotation isKindOfClass:[PinAnnotation class]]) {
if (newState == MKAnnotationViewDragStateEnding) {
view.dragState = MKAnnotationViewDragStateNone;
}
}
}

उत्तर के लिए -2 № 3

डॉन ने MKAnnotationView का पुन: उपयोग नहीं किया और यह काम करेगा।