2012-07-24 27 views
8

के रोटेशन सेंटर को कैसे सेट करें मुझे MKAnnotationView एस के साथ कोई समस्या है जब MKUserTrackingModeFollowWithHeading MKMapView पर सक्षम है।एमकेएनोटेशन व्यू

मैंने एमकेएनोटेशन व्यू के केंद्र ऑफसेट संपत्ति का उपयोग करके अपनी छवियों को स्थान दिया। छवि के केंद्र में समन्वय प्रणाली को पिन की नोक रिश्तेदार के निर्देशांक निर्दिष्ट करना कुछ हद तक जवाबी सहज ज्ञान युक्त है, लेकिन मैं निम्न सूत्र के साथ आया था:

annotationView.centerOffset = CGPointMake(imageWidth/2.0 - tipXCoordinate, imageHeight/2.0 - tipYCordinate); 

यह अंदर और बाहर नक्शा जूमिंग के लिए ठीक काम करता है । पिन की युक्तियां मानचित्र पर अपनी सापेक्ष स्थिति रखती हैं।

हालांकि, जब मैं MKUserTrackingModeFollowWithHeading सक्षम करता हूं, तो यह अब और काम नहीं करेगा। पिन टिप के बजाए छवि के केंद्र के चारों ओर घूमते हैं। तो जब नक्शा घूमता है, तो युक्तियाँ उन स्थानों पर कोई बिंदु नहीं देती हैं जिन्हें वे एनोटेट करना चाहते हैं।

मैंने frame और centerMKAnnotationView के गुणों के साथ थोड़ा सा खेला है, लेकिन मुझे लगता है कि वे पिन के संरेखण पर कोई प्रभाव नहीं डाल रहे हैं।

दिलचस्प बात यह है कि MKPinAnnotationViewcenterOffset का उपयोग नहीं करता है, लेकिन इसके बजाय frame स्थानांतरित किया गया है। हालांकि, मैं इसे पुन: उत्पन्न करने में असमर्थ था। मेरे कस्टम व्यू के frame को बदलना इसे बिल्कुल भी नहीं चला था।

किसी भी अंतर्दृष्टि के लिए धन्यवाद प्रदान कर सकते हैं :-)

समाधान:

centerOffset का उपयोग न करें! इसके बजाय annotationView.layer.anchorPoint का उपयोग करें। एंकर पॉइंट की समन्वय प्रणाली भी बहुत अच्छी है। निर्देशांक 0.0 (ऊपर/बाएं) 1.0 (नीचे/सही) से छवि आयत की रेंज:

annotationView.layer.anchorPoint = CGPointMake(tipXCoordinate/imageWidth, tipYCordinate/imageHeight); 

उत्तर

12

एक दोस्त ने मुझे पूछता है कि आप जानते हैं कि आप "उदाहरण के लिए यह कोशिश" चाहिए जाने के लिए:

self.layer.anchorPoint = CGPointMake (0.5f, 1.0f); 
+1

अपने दोस्त को बताएं, वह सप्ताह का मेरा निजी नायक है :-) बहुत धन्यवाद! – Chris