2014-12-07 13 views
15

के साथ पिन (एनोटेशन) कैसे जोड़ूं, मैं तेज़ भाषा में नया हूं, और अभी तक मैपकिट के साथ कोई एप्लिकेशन नहीं किया है। लेकिन मेरे पास नक्शा और क्षेत्र सेट हैं, लेकिन मैं उपयोगकर्ताओं को पिन जोड़ने की अनुमति देने के लिए लटका हूं। मुझे स्पष्टीकरण दें, मुझे पता नहीं है कि कहां से शुरू करना है, मेरे पास इस समय (पिन के लिए) मेरा चर है, लेकिन मुझे यह भी यकीन नहीं है कि यह सही है या नहीं। कोई भी सहायताकाफी प्रशंसनीय होगी!! मेरे पास क्या है ...मैं एक्सकोड 6 (स्विफ्ट)

var MyPins: MKPinAnnotatoinView!

......

override func viewDidLoad() { 
    super.viewDidLoad() 

MapView कोड

..... ..... }

उत्तर

0

आप के लिए एक विधि को कॉल करना होगा जब और जहां उपयोगकर्ता को पिन जोड़ने की जरूरत है। यदि आप चाहते हैं कि यह उस पिन को जोड़ना चाहे जहां उपयोगकर्ता मानचित्र पर टैप करता है और रखता है, तो आपको एक इशारा रिकॉर्ड करने की आवश्यकता होगी, लेकिन यदि आप इसे एक बटन के माध्यम से करना चाहते हैं तो आप निश्चित रूप से इसे केवल एक क्रिया में कॉल करेंगे। किसी भी तरह से पिन जोड़ने के लिए प्रलेखन पर चर्चा की जाती है Here

38

आपका पिन चर सही है। अब आपको इस एनोटेशन को MKMapView पर जोड़ना होगा।

मानचित्र दृश्य में कस्टम एनोटेशन जोड़ने के लिए आप MKAnnotation के लिए कस्टम क्लास भी बना सकते हैं।

MapExampleiOS8 के लिए एक बीटा डेमो => कौन सा स्विफ्ट 2,1

का समर्थन करता है नीचे दिए गए चरणों का पालन करें:

1. जोड़े MapKit.framework परियोजना के लिए।

enter image description here

2. बनाएं मानचित्र दृश्य नियंत्रण से स्टोरीबोर्ड चर IBOutlet या दृश्य नियंत्रक में यह पैदा करते हैं। इस चर के लिए प्रतिनिधि सेट यह प्रतिनिधि तरीकों ओवरराइड करने के लिए:

class ViewController: UIViewController, MKMapViewDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Set map view delegate with controller 
     self.mapView.delegate = self 
    } 
} 

3. अवहेलना अपने प्रतिनिधि तरीके::

यहाँ हम mapView(_:viewForAnnotation:) ओवरराइड करने के लिए की जरूरत है

प्रतिनिधि हस्ताक्षर जोड़ें नियंत्रक इंटरफ़ेस देखने पर मानचित्र पर एनोटेशन पिन दिखाने के लिए विधि।

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 
    if (annotation is MKUserLocation) { 
     return nil 
    } 

    if (annotation.isKind(of: CustomAnnotation.self)) { 
     let customAnnotation = annotation as? CustomAnnotation 
     mapView.translatesAutoresizingMaskIntoConstraints = false 
     var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "CustomAnnotation") as MKAnnotationView! 

     if (annotationView == nil) { 
      annotationView = customAnnotation?.annotationView() 
     } else { 
      annotationView?.annotation = annotation; 
     } 

     self.addBounceAnimationToView(annotationView) 
     return annotationView 
    } else { 
     return nil 
    } 
} 

4. दृश्य मैप करने के लिए MKPointAnnotation जोड़ें।

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

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Set map view delegate with controller 
    self.mapView.delegate = self 

    let newYorkLocation = CLLocationCoordinate2DMake(40.730872, -74.003066) 
    // Drop a pin 
    let dropPin = MKPointAnnotation() 
    dropPin.coordinate = newYorkLocation 
    dropPin.title = "New York City" 
    mapView.addAnnotation(dropPin) 
} 
+1

हाँ, यह काम करता है! आसान और छोटा रास्ता। – Mehmet

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