2011-03-15 13 views
9

पर आधारित MKMapView को कैसे स्थानांतरित करें मेरे पास एक एमकेमैप व्यू है जो मेरे दृश्य की पूरी तरह से पॉप्युलेट करता है, लेकिन जब कोई पिन चुना जाता है, तो मैं मानचित्र के शीर्ष पर एक और दृश्य स्लाइड कर रहा हूं। मैं मानचित्र को स्थानांतरित करना चाहता हूं ताकि पिन नक्शे के दृश्य क्षेत्र के केंद्र में दिखाई दे।चयनित एनोटेशन

समझाने में कठिनाई लेकिन उम्मीद है कि यह समझ में आता है! अग्रिम धन्यवाद।

उत्तर

29

आप कर सकते थे, मानचित्र दृश्य के लिए visibleMapRect से MKMapRect हो रही टिप्पणियों का एक MKMapPoint को समन्वय परिवर्तित करने, MKMapRect के मूल को रीसेट तो MKMapPoint उचित स्थिति में है, और फिर नए को दिखाई क्षेत्र स्थापित करने के लिए setVisibleMapRect:animated: का उपयोग करके देखें MKMapRect।

उदाहरण के लिए, यदि आप नक्शे जाना चाहते थे तो एनोटेशन क्षैतिज रूप से केंद्रित है और नीचे खड़ी का 25% हिस्सा है, तो आप कुछ इस तरह कर सकता है:

MKMapRect r = [mapView visibleMapRect]; 
MKMapPoint pt = MKMapPointForCoordinate([annotation coordinate]); 
r.origin.x = pt.x - r.size.width * 0.5; 
r.origin.y = pt.y - r.size.height * 0.25; 
[mapView setVisibleMapRect:r animated:YES]; 
+0

कि के लिए धन्यवाद, anomie। यह बहुत अच्छा काम किया! – Ricky

0

मैं प्रक्रियाओं का पालन के साथ समाप्त हो गया:

** एनोटेशन पर केंद्रित: **

- (void) centerOnSelection:(id<MKAnnotation>)annotation 
{ 
    MKCoordinateRegion region = self.mapView.region; 
    region.center = annotation.coordinate; 

    CGFloat per = ([self sizeOfBottom] - [self sizeOfTop])/(2 * self.mapView.frame.size.height); 
    region.center.latitude -= self.mapView.region.span.latitudeDelta * per; 

    [self.mapView setRegion:region animated:YES]; 
} 

** एनोटेशन पर ज़ूम इन: **

- (void) zoomAndCenterOnSelection:(id<MKAnnotation>)annotation 
{ 
    DLog(@"zoomAndCenterOnSelection"); 

    MKCoordinateRegion region = self.mapView.region; 
    MKCoordinateSpan span = MKCoordinateSpanMake(0.005, 0.005); 

    region.center = annotation.coordinate; 

    CGFloat per = ([self sizeOfBottom] - [self sizeOfTop])/(2 * self.mapView.frame.size.height); 
    region.center.latitude -= self.mapView.region.span.latitudeDelta * span.latitudeDelta/region.span.latitudeDelta * per; 

    region.span = span; 

    [self.mapView setRegion:region animated:YES]; 
} 

-(CGFloat) sizeOfBottom और -(CGFloat) sizeOfTop लेआउट से MapView कवर पैनल के दोनों वापसी ऊंचाई गाइड

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