2011-11-20 14 views
12
पर कॉल आउट नहीं दिखा रहा

मैं इस तरह एक MKMapView और मैं जोड़ रहा एनोटेशन मिल गया है:MKAnnotation MKMapView

for (NSDictionary *tmp in response) 
{ 
    NSDictionary *places = [tmp objectForKey:@"place"]; 
    NSDictionary *location = [places objectForKey:@"location"]; 
    NSLog(@"long: %@ Lat:%@",[location objectForKey:@"longitude"], [location objectForKey:@"latitude"]); 

    float longitude = [[location objectForKey:@"longitude"] floatValue]; 
    float latitude = [[location objectForKey:@"latitude"] floatValue]; 


    CLLocationCoordinate2D locationco = {latitude,longitude}; 
    NSString *titleString = [tmp objectForKey:@"name"]; 

    Place *pin = [[Place alloc] init]; 
    pin.coordinate = locationco; 
    pin.title = titleString; 
    pin.subtitle = @"A Location"; 

    //NSArray *annots = [[NSArray alloc] initWithObjects:pin, nil]; 
    //[map addAnnotations:annots]; 
    [map addAnnotation:pin]; 
    [[map viewForAnnotation:pin] setCanShowCallout:YES]; 
} 

MKAnnotation के मानचित्र ठीक पर दिखाई दें, और मैं उन्हें चुन सकते हैं, फिर भी कोई कॉलआउट बबल प्रकट होता है। मुझे पता है कि वे ठीक से चयनित किया जा रहा है के रूप में इस

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 
{ 
    [view setCanShowCallout:YES]; 
    NSLog(@"Title:%@",[view.annotation description]); 
} 

लेकिन वह सिर्फ

Title:(null) 

मैं एआरसी उपयोग कर रहा हूँ बाहर प्रिंट, और मैं गुण जैसे मेरी जगह वस्तु में स्थापित मिल गया है :

@property (nonatomic) CLLocationCoordinate2D coordinate; 
@property (nonatomic,readwrite, copy) NSString *title; 
@property (nonatomic,readwrite, copy) NSString *subtitle; 

मैं गलत/लापता क्या कर रहा हूं? धन्यवाद।

+0

'addAnotation' लाइन से पहले, क्या आप NSLog 'pin.title' कर सकते हैं और देख सकते हैं कि यह क्या दिखाता है? साथ ही, प्लेस ऑब्जेक्ट में आपने 'विवरण' विधि को किसी भी मौके से ओवरराइड किया था और यदि ऐसा है तो वहां कौन सा कोड है? – Anna

+0

'एनएसएलओजी (@"% @ ", पिन.title); 'बस' (शून्य)' देता है। मुझे समझ में नहीं आता क्यों। –

उत्तर

40

कॉलआउट नहीं दिखाता है क्योंकि titlenil है।

डिफ़ॉल्ट मानचित्र दृश्य कार्यान्वयन कॉलआउट दिखाता है क्योंकि कॉलआउट दिखाने के लिए viewForAnnotation लागू करना आवश्यक नहीं है। (हालांकि, अगर आप इसे लागू करना , आप canShowCallout कि प्रतिनिधि विधि में सेट करना होगा और नहीं, जहां आप इसे अभी कर रहे हैं।)

आप सेट यहां तक ​​कि अगर canShowCalloutYES लिए, कॉल आउट अभी भी अगर नहीं दिखाया जाएगा titlenil या खाली है।

tmp शब्दकोश लॉग इन करें। या तो name कुंजी खाली है या यह अस्तित्व में नहीं है।

+0

आपको बहुत बहुत धन्यवाद। ऐसी मूर्खतापूर्ण गलती। –

+0

@ अन्ना: MKPinAnnotationView के लिए कोई संपत्ति झुकाव नहीं है। मैं वही कैसे कर सकता हूं। –

+0

यह मेरे लिए भी समस्या थी। – instanceof

9

आपको MKMapViewDelegate विधि mapView:viewForAnnotation: लागू करने की आवश्यकता है, जो दृश्य बनाता है और इसे वापस करता है। उस विधि में [view setCanShowCallout:YES]; पर क्लिक करें, जिस पर आप एनोटेशन के लिए वापस लौटने की योजना बना रहे हैं।

क्योंकि mapView:didSelectAnnotationView: को पिन चुना गया है, इसके बाद कॉलआउट को सक्षम/अक्षम करने पर इसका कोई प्रभाव नहीं पड़ेगा।

+0

धन्यवाद, मैं उस कोड को याद कर रहा था। दुर्भाग्य से मुझे अभी भी समस्या है। ऐसा लगता है कि 'pin.title' ठीक से सेट नहीं किया जा रहा है, जैसे कि मैं इसे सेट करने के बाद इसे मुद्रित करने का प्रयास करता हूं, यह सिर्फ' (शून्य) ' –

+0

प्रतीत होता है क्षमा करें, पूरी तरह से इसे अनदेखा करें, आपको अन्य उत्तर को स्वीकार करना चाहिए बिलकुल सही। :) –