2012-03-27 17 views
51

मेरे पास एक जीपीएस समन्वय (अक्षांश, देशांतर) है और मैं जल्दी से उस स्थिति को दिखाते हुए एक MKMapView पर एक पिन रखना चाहता हूं। सबकुछ ठीक काम करता है, लेकिन मुझे केवल एक पिन की जरूरत नहीं है, जिसमें कॉलआउट नहीं है, ऐसा करने का एक तेज़ तरीका है या जो नीचे है, उसके नीचे क्या है?जल्दी से एक पिन को MKMapView में जोड़ रहा है?

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 
    MKPinAnnotationView *pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"DETAILPIN_ID"]; 
    [pinView setAnimatesDrop:YES]; 
    [pinView setCanShowCallout:NO]; 
    return pinView; 
} 

एनबी: मैं पुन: प्रयोज्य एनोटेशन विचारों के लिए जाँच करने के लिए के रूप में मैं केवल पिन का उपयोग कर रहा एक विस्तृत दृश्य में एक पद (जो नष्ट कर दिया और अगली बार जब एक विवरण दृश्य अनुरोध किया जाता है निर्मित किया जाता है) को दिखाने के लिए की जरूरत नहीं है ।

उत्तर

4

चूंकि आप ड्रॉप को एनिमेट करना चाहते हैं, इसलिए आपको viewForAnnotation को कार्यान्वित करने की आवश्यकता होगी क्योंकि यह संपत्ति डिफ़ॉल्ट रूप से NO है।

यदि आपको ड्रॉप को एनिमेट करने की आवश्यकता नहीं है, तो आप viewForAnnotation विधि कार्यान्वयन को पूरी तरह से समाप्त कर सकते हैं और कॉलआउट को अक्षम करने के लिए एनोटेशन के 0 एनको एनोटेशन या रिक्त स्थान पर सेट कर सकते हैं।

यदि आपको पिन ड्रॉप एनीमेशन की आवश्यकता है और आप उपयोगकर्ता का स्थान (नीला बिंदु) भी दिखा रहे हैं, तो आपको MKUserLocationviewForAnnotation में और nil पर वापस लौटने की आवश्यकता होगी।

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

+0

एक अच्छा बिंदु Thats, मैं viewForAnnotation को लागू नहीं की कोशिश की थी लेकिन मुझे नहीं पता था कि दोनों मेरी शीर्षक और उपशीर्षक थे एनएसएसटींग्स ​​को इंगित करना।मैं पिन ड्रॉप से ​​अत्यधिक जुड़ा हुआ नहीं हूं, लेकिन मुझे लगता है कि अब यह एक इच्छानुसार इसे छोड़ देगा। आपके उत्तर के लिए बहुत बहुत धन्यवाद, बहुत उपयोगी और निश्चित रूप से मैं भविष्य में कुछ उपयोग करूंगा। – fuzzygoat

111

-mapView:viewForAnnotation: विधि का उपयोग करने के बजाय, बस MKPointAnnotation के लिए कोड को अपने -viewDidLoad विधि में डालें। यह बूंद को एनिमेट नहीं करेगा, लेकिन यह बहुत आसान है।

// Place a single pin 
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
[annotation setCoordinate:centerCoordinate]; 
[annotation setTitle:@"Title"]; //You can set the subtitle too 
[self.mapView addAnnotation:annotation]; 

स्विफ्ट संस्करण:

let annotation = MKPointAnnotation() 
let centerCoordinate = CLLocationCoordinate2D(latitude: 41, longitude:29) 
annotation.coordinate = centerCoordinate 
annotation.title = "Title" 
mapView.addAnnotation(annotation) 
+2

क्या एमकेपॉइंटएनोटेशन की बूंद को एनिमेट करना संभव है? – VeganKid

+0

आप आसानी से ड्रॉप को एनिमेट नहीं कर सकते हैं। यदि आप एनीमेशन चाहते हैं, तो 'mapView: viewForAnotation:' प्रतिनिधि विधि का उपयोग करें। –

6

सबसे आसान और सरल तरीका पिन छोड़ने के लिए और मानचित्र दृश्य में प्रदर्शित वर्तमान स्थान बस अपने viewDidLoad विधि में इस कोड को जोड़ना है। (मान लें कि उपयोगकर्ता का वर्तमान स्थान पहले से ही आपके द्वारा लाया गया है)।

NSString *display_coordinates=[NSString stringWithFormat:@"Latitude is %f and Longitude is %f",coordinate.longitude,coordinate.latitude]; 

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
[annotation setCoordinate:coordinate]; 
[annotation setTitle:@"Click Labs"];    
[annotation setSubtitle:display_coordinates]; 
[mapView addAnnotation:annotation]; 
32

आप बिंदु और इस तरह इस क्षेत्र निर्धारित कर सकते हैं:

CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(lat, lon); 

MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1); 
MKCoordinateRegion region = {coord, span}; 

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
[annotation setCoordinate:coord]; 

[self.staticMapView setRegion:region]; 
[self.staticMapView addAnnotation:annotation]; 
+0

धन्यवाद। –

+0

काम कर रहे धन्यवाद। अच्छी तरह से काम करता है ..! धन्यवाद.. – Gati

3
MKMapView में जोड़ने पिन की

स्विफ्ट संस्करण:

func addPin() { 
    let annotation = MKPointAnnotation() 
    let centerCoordinate = CLLocationCoordinate2D(latitude: 20.836864, longitude:-156.874269) 
    annotation.coordinate = centerCoordinate 
    annotation.title = "Lanai, Hawaii" 
    mapView.addAnnotation(annotation) 
} 

किसी क्षेत्र या पिन

ध्यान केंद्रित करने के स्विफ्ट संस्करण
func focusMapView() { 
    let mapCenter = CLLocationCoordinate2DMake(20.836864, -156.874269) 
    let span = MKCoordinateSpanMake(0.1, 0.1) 
    let region = MKCoordinateRegionMake(mapCenter, span) 
    mapView.region = region 
} 

अधिक जानकारी जानने के लिए की यात्रा "Load MKMapView using Swift"।

0

, बस आप इसे पसंद जोड़ सकते हैं:

mapView.mapType = MKMapType.standard 

    let location = CLLocationCoordinate2D(latitude: 23.0225,longitude: 72.5714) 

    let span = MKCoordinateSpanMake(0.05, 0.05) 
    let region = MKCoordinateRegion(center: location, span: span) 
    mapView.setRegion(region, animated: true) 

    let annotation = MKPointAnnotation() 
    annotation.coordinate = location 
    annotation.title = "Javed Multani" 
    annotation.subtitle = "Surat, India" 
    mapView.addAnnotation(annotation) 

यह की तरह लग रहा है: enter image description here

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