2011-02-09 9 views
6

मेरे पास आईफोन के लिए एक नेविगेशन आधारित एप्लिकेशन है जो मैं काम कर रहा हूं जो उपयोगकर्ता को मानचित्र पर किसी तालिका से चयन देखने की अनुमति देता है। मेरे पास एक एनोटेशन है जो मानचित्र पर उपयोगकर्ता के चुने हुए स्थान को पिनपॉइंट करता है। सामान्य व्यवहार के अनुसार, यदि उपयोगकर्ता एनोटेशन पर क्लिक करता है, तो स्थान के बारे में विवरण के साथ एक कॉलआउट दिखाई देता है। यहां कोई समस्या नहीं है।नक्शा स्वचालित रूप से लोड होने पर स्वचालित रूप से मानचित्र पर एनोटेशन के कॉलआउट को कैसे खोलें?

मेरा सवाल यह है कि, उपयोगकर्ता को नक्शा युक्त स्क्रीन पर ले जाने के बाद कॉलआउट स्वचालित रूप से एनोटेशन से दिखाई देना चाहता है, ताकि उपयोगकर्ता को एनोटेशन पर क्लिक करने के लिए एनोटेशन पर क्लिक न करना पड़े स्थान के बारे में विवरण, लेकिन मुझे यकीन नहीं है कि यह कैसे करें।

- (void)viewDidLoad { 

    [super viewDidLoad]; 
MKCoordinateRegion region; 
MKCoordinateSpan span; 

NavButtonAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
userCoord = delegate.userLocation.coordinate; 

region.center = userCoord; 
span.latitudeDelta = 0.4; 
span.longitudeDelta = 0.4; 
region.span = span; 

[mapView setMapType:MKMapTypeStandard]; 
[mapView setZoomEnabled:YES]; 
[mapView setScrollEnabled:YES]; 
mapView.showsUserLocation = YES; 
[mapView setRegion:region animated:YES]; 

RestaurantAnnotation *rAnnotation = [[RestaurantAnnotation alloc] init]; 
rAnnotation.title = restaurantObj.name; 
rAnnotation.subtitle = restaurantObj.address; 
rAnnotation.subtitle = [restaurantObj.address stringByAppendingFormat:@" %@", restaurantObj.hours]; 
rAnnotation.subtitle = [restaurantObj.address stringByAppendingFormat:@" %@", restaurantObj.phoneNumber]; 


CLLocationCoordinate2D newCoord = {restaurantObj.latitude, restaurantObj.longitude}; 
rAnnotation.coordinate = newCoord; 
[mapView addAnnotation:rAnnotation]; 

} 

MapViewController पिछली स्क्रीन में निम्न विधि से कहा जाता है::

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

Restaurant *rLocation = [restaurantList objectAtIndex:indexPath.row]; 

MapViewController *mapController = [[MapViewController alloc] initWithRestaurant:rLocation]; 
[self.navigationController pushViewController:mapController animated:YES]; 
[mapController release]; 
} 

मैं अपने "MapViewController" वर्ग है, जहां नक्शा प्रदर्शन काम के थोक किया जाता है में निम्न विधि है मुझे एहसास है कि मुझे इसे पूरा करने के लिए निम्न विधि का उपयोग करना होगा:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    id<MKAnnotation> myAnnotation = [mapView.annotations objectAtIndex:0]; 
    [mapView selectAnnotation:myAnnotation animated:YES]; 
} 

हालांकि, मुझे यकीन नहीं है कि कैसे। मेरे पास कई टिप्पणियां नहीं हैं जिनका मैं एक साथ उपयोग कर रहा हूं, मेरे पास केवल एक टिप्पणी है जिसके साथ मुझे काम करने की आवश्यकता है।

मैं इस विधि को अपने ऐप में कहां रखूं, और मैं इसे कहां से कहूं?
क्या मैं इस विधि को viewDidLoad विधि से कॉल करता हूं और वास्तविक विधि को मेरे MapViewController क्लास के अंदर डालता हूं?

उत्तर

12

आप वर्ग आप MKMapView के लिए प्रतिनिधि के रूप में सेट की गई

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { 
    id myAnnotation = [mapView.annotations objectAtIndex:0]; 
    [mapView selectAnnotation:myAnnotation animated:YES]; 
} 

जोड़ने के लिए।

+0

आपके त्वरित उत्तर के लिए बहुत बहुत धन्यवाद। क्या मैं दृश्यडिडलोड विधि से विधि को कॉल करूंगा? – syedfa

+0

नहीं, आपको इसे सीधे कॉल करने की आवश्यकता नहीं है। जब तक आप प्रतिनिधि सेट अप करते हैं, इसे स्वचालित रूप से मानचित्रदृश्य द्वारा बुलाया जाएगा। – benwong

+1

आपके उत्तर के लिए बहुत बहुत धन्यवाद। आपका समाधान काम किया! ध्यान रखें। – syedfa

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