2015-03-26 9 views
5

में मानचित्र दृश्य पर MKPolyLine दिखाई नहीं दे रहा है मेरे पास एक मानचित्र में MKPolyline जोड़ने के लिए स्विफ्ट में निम्न कोड है। एक्सकोड मुझे नहीं बता रहा है कि एक मुद्दा है, और जहां तक ​​मैंने पढ़ा है, यह काम करना चाहिए। MapView के लिएस्विफ्ट

आउटलेट:

@IBOutlet weak var mapView: MKMapView! 

चर निर्देशांक धारण करने के लिए:

var coordinates: [CLLocationCoordinate2D] = [] 

कोर डाटा से मेरी बचाया निर्देशांक प्राप्त करें:

var contextMap = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext! 
var requestMap = NSFetchRequest(entityName: "Locations") 
let predMap = NSPredicate(format: "game = %d", passedGameNumber) 
requestMap.predicate = predMap 
requestMap.sortDescriptors = [NSSortDescriptor(key:"time", ascending: false)] 
    self.locationsList = contextMap.executeFetchRequest(requestMap, error: nil)! as [Locations] 

कोर डाटा से निर्देशांक जोड़े मेरी नई सरणी में:

पॉलीलाइन बनाएँ:

var polyLine = MKPolyline(coordinates: &coordinates, count: coordinates.count) 

ओवरले जोड़ें:

self.mapView.addOverlay(polyLine, level: MKOverlayLevel.AboveRoads) 

MapView में जोड़ें:

func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! { 
    if overlay.isKindOfClass(MKPolyline) { 
     // draw the track 
     let polyLine = overlay 
     let polyLineRenderer = MKPolylineRenderer(overlay: polyLine) 
     polyLineRenderer.strokeColor = UIColor.blueColor() 
     polyLineRenderer.lineWidth = 2.0 

     return polyLineRenderer 
    } 

    return nil 
} 

मैं बस एक खाली MapView मिलता है। मैं कंसोलेट्स सरणी को कंसोल पर प्रिंट कर सकता हूं, इसलिए मुझे पता है कि डेटा जोड़ा गया है। कोई विचार?

+0

अपने ViewController 'MKMapViewDelegate' प्रोटोकॉल के अनुरूप है? – zisoft

+0

क्या नक्शा व्यू का प्रतिनिधि आउटलेट व्यू कंट्रोलर से जुड़ा हुआ है? AddOverlay के बाद, self.mapView.overlays.count 1 कहता है? क्या rendererForOverlay विधि वास्तव में बुलाया जाता है (वहाँ ब्रेकपॉइंट या println डाल)? क्या निर्देशांक वैध/पीछे हैं (ऐसा होता है)? असंबंधित, लेकिन 1 में इंडेक्स के लिए नहीं होना चाहिए .. 0 में सूचकांक के लिए '' 'होना चाहिए .. <'? – Anna

+0

दोनों धन्यवाद। अन्ना, मैंने ब्रेकपॉइंट जोड़ा और ऐसा लगता है कि इसे नहीं कहा जा रहा है। एक मूर्ख सवाल हो सकता है, लेकिन मैं इसे कैसे हल कर सकता हूं? मुझे यकीन है कि यह आसान है। इंडेक्स के बारे में 1 टिप्पणी में, यह मुझे एक त्रुटि दे रहा था जब मेरे पास पहले 0 था - अब यह 1. –

उत्तर

6

टिप्पणियों में पोस्ट किए गए अनुसार, प्रश्न में कोड ठीक था। मैं बस प्रतिनिधि को स्थापित नहीं कर रहा था।

mapView.delegate = self 
5

उपरोक्त विधि Swift3 में इस तरह लिखा जाएगा:

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 
     if overlay.isKind(of: MKPolyline.self) { 
      // draw the track 
      let polyLine = overlay 
      let polyLineRenderer = MKPolylineRenderer(overlay: polyLine) 
      polyLineRenderer.strokeColor = UIColor.blue 
      polyLineRenderer.lineWidth = 2.0 

      return polyLineRenderer 
     } 

     return MKPolylineRenderer() 
    }