2012-11-21 25 views
8

नियमित एनोटेशन पिन की उत्पत्ति नीचे के बीच में है, इसलिए पिन हमेशा एक ही स्थान पर इंगित करता है।मानचित्र की एनोटेशन व्यू की छवि की उत्पत्ति बदलें?

लेकिन जब मैं अपनी कस्टम छवि जोड़ता हूं, तो इसकी उत्पत्ति छवि का केंद्र है, इसलिए प्रत्येक ज़ूम इन या आउट, मेरी छवि के नीचे एक अलग जगह पर इंगित करता है।

enter image description here

यहाँ मेरी पिन लेकिन

enter image description here

पेरिस के केन्द्र लेकिन जब मैं में ज़ूम, मेरे पिन के नीचे के केंद्र की ओर संकेत नहीं है को इंगित माना जाता है पेरिस।

मैं CGRect.origin के साथ प्रयास कर रहा हूं लेकिन कुछ भी उपयोगी नहीं मिला।

- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    MKAnnotationView * customPinView = [[MKAnnotationView alloc] init]; 
    UIImage * img = [UIImage imageNamed:@"waterPin.png"] ; 
    CGRect resizeRect; 
    resizeRect.size.height = 40; 
    resizeRect.size.width = 40; 
    resizeRect.origin = (CGPoint){0.0f, 0.0f}; 
    UIGraphicsBeginImageContext(resizeRect.size); 
    [img drawInRect:resizeRect]; 
    UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    customPinView.image = resizedImage; 
    return customPinView; 
} 
+0

अगर आप कुछ कोड पोस्ट कर सकते हैं ?? –

+0

अभी पोस्ट किया गया, क्षमा करें – AMTourky

+1

क्या निर्देशांक (लेट/लांग) एनोटेशन सेट बिल्कुल सही है? छवि ऑफ़सेट समायोजित करने के लिए 'customPinView.centerOffset' सेट करने का प्रयास करें (लेकिन मैं पहले निर्देशांक सत्यापित करता हूं)। साथ ही, आपको MKAnotationView के लिए केवल init के बजाय initWithAnnotation का उपयोग करना चाहिए। – Anna

उत्तर

13

MKAnnotationView एक centerOffset प्रॉपर्टी में आप छवि ऑफसेट समायोजित करने के लिए सेट करके देखें सकता है:

यहाँ मेरी कोड है

customPinView.centerOffset = CGPointMake(xOffset,yOffset); 


असंबंधित, लेकिन आप initWithAnnotation के बजाय का उपयोग करना चाहिए MKAnnotationView बनाने के लिए बस init
यह dequeueReusableAnnotationViewWithIdentifier का उपयोग करने के लिए भी चोट नहीं पहुंचाएगा और प्रदर्शन में सुधार के लिए एनोटेशन व्यू पुनः उपयोग लागू करेगा।

मैं यह भी सुझाव दूंगा कि प्रतिनिधि पद्धति में छवि का प्रोग्रामेटिक रूप से आकार बदलना और इसके बजाय शुरू करने के लिए पहले से ही आकार वाली छवि का उपयोग करना है। फिर आप हर बार एनोटेशन छवियों का आकार बदलने के बिना customPinView.image = [UIImage imageNamed:@"resizedWaterPin.png"]; कर सकते हैं।

+0

खींचने के बारे में क्या ?! मैंने इसे ड्रैग करने योग्य = हाँ सेट किया है, लेकिन सभी दृश्य नहीं, मुझे इसे खींचने के लिए कुछ सटीक स्थानों पर क्लिक करना होगा। मैं इसे छूने के लिए चाहता हूं जहां भी मैं इसे छूता हूं – AMTourky

+1

सुनिश्चित करें कि आपका एनोटेशन क्लास सेट लागू करता है अन्यथा इसे ड्रैग करने योग्य नहीं है, भले ही ड्रैगगेबल हाँ हो। Http://stackoverflow.com/questions/11927692/ios-mkmapview-draggable-annotations और [प्रलेखन] देखें (http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/AnnotatingMaps /AnnotatingMaps.html#//apple_ref/doc/uid/TP40009497-CH6-SW22)। – Anna

+0

यह खींच रहा है, हां मैंने आवश्यक विधियों को लागू किया है, लेकिन पिन स्वयं, मुझे विशिष्ट स्थानों से उन्हें छूने की जरूरत है, पिन – AMTourky

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^