2011-05-26 5 views
5

क्या कोई तरीका है (या किसी भी तरह से) आप विधि के अंदर एनोटेशन के "इंडेक्स पथ" प्राप्त कर सकते हैं:MapView एनोटेशन इंडेक्सपैथ?

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation

मैं जो करना चाहता हूं उसे एनोटेशन के अनुसार सरणी के अंदर कुछ मिलता है। एक तरीका है जो मुझे लगता है कि मैं प्रतिलिपि बनाना चाहता हूं - tableView:cellForRowAtIndexPath: है और "indexPath" का उपयोग करें।

बहुत सी खोज की लेकिन कोई परिणाम नहीं मिला। या शायद मैं खोज में बस खराब हूँ। किसी भी संदर्भ की सराहना की जाएगी।

+0

यदि आप सिर्फ एनोटेशन की एक सरणी चाहते हैं तो आप 'mapView.annotations' का उपयोग नहीं कर सकते हैं जो एनोटेशन की सरणी देता है। – visakh7

+0

मुझे एनोटेशन के बाहर डेटा (एक अलग डेटा सेट से) प्राप्त करने की आवश्यकता है ताकि केवल एनोटेशन प्राप्त न हो। – Angelo

उत्तर

-1

मेरे अपने प्रश्न (यह कैसे यह मेरे लिए काम करता है) का जवाब करने के लिए:

मैं कस्टम एनोटेशन में एक उदाहरण बनाया है और - mapView:viewForAnnotation: अंदर वहाँ डेटा स्थानांतरित किया है, तो (मैं कस्टम pinView प्रयुक्त) मैं आयातित और एक बनाया मेरे कस्टमएनोटेशन का उदाहरण और वहां से डेटा मिला।

[customAnnotation setSomething: data];
मेरे लिए
- mapView:viewForAnnotation: 
{ 
    pinView = [[[CustomPinView alloc] initWithAnnotation: annotation reuseIdentifier: PinIdentifier] autorelease]; 
}
- initWithAnnotation:reuseIdentifier: 
{ 
  CustomAnnotation *customAnnotation = (CustomAnnotation *)annotation; 

    [customAnnotation something]; 
}

Overkill लेकिन यह काम किया जाता है।

4
NSUInteger index = [mapView.annotations indexOfObject:annotation]; 

के बाद से अंतर्निहित सरणी एक परिवर्तनशील है, ध्यान दें कि index बदल सकते हैं। यह सबसे नज़दीकी indexPath जैसा सूचना प्राप्त हो सकती है।

+0

हां यह है, लेकिन जैसा कि ध्यान दिया गया है, सूचकांक बदल रहा है और यह काम नहीं करेगा (या अधिकतर काम नहीं करेगा)। कई बार यह एक अलग इंडेक्स से जानकारी प्राप्त हो रही है। एक और बात यह है कि यदि उपयोगकर्ता का स्थान चालू है, तो आपको टिप्पणियां एनएसएमयूटेबलएरे में स्थानांतरित करनी चाहिए और इसे पहले हटाएं (अनुक्रमणिका: 0)। – Angelo