2013-12-13 8 views
11

मैं नीचे दिए गए कोड (वैसे भी इसका हिस्सा) के साथ दो बिंदुओं के बीच एक रेखा बना सकता हूं) मैं ठोस के बजाय रेखा को कैसे बिंदीदार बना सकता हूं? क्या ओपेसिटी को जितना लंबा लाइन बदलना संभव होगा?मानचित्र दृश्य पर बिंदीदार रेखा

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay 
{ 
    MKPolylineRenderer *renderer =[[MKPolylineRenderer alloc] initWithPolyline:overlay]; 
    renderer.strokeColor = [UIColor orangeColor]; 
    renderer.lineWidth = 3.0; 

    return renderer; 
} 

उत्तर

39

आप लाइन के लिए इच्छित पैटर्न बनाने के लिए lineDashPattern संपत्ति का उपयोग कर सकते हैं।

MKPolylineRendererMKOverlayPathRenderer का उप-वर्ग है जिसमें उस संपत्ति और कुछ अन्य हैं (दस्तावेज़ीकरण के लिंक देखें)।

उदाहरण के लिए, यह एक पंक्ति 2 बिंदुओं के लिए पैटर्न को 5 बिंदु अंतराल के बाद सेट करता है। पॉलीलाइन की पूरी लंबाई के लिए पैटर्न दोहराया जाता है।

renderer.lineDashPattern = @[@2, @5]; 


अस्पष्टता के लिए, आप strokeColor को एक अल्फा लागू या तो कर सकते हैं:

renderer.strokeColor = [[UIColor orangeColor] colorWithAlphaComponent:0.5]; 

या alpha गुण सेट:

renderer.alpha = 0.5; 

सुनिश्चित नहीं हैं कि आपके द्वारा क्या मतलब है " लंबी लाइन "सवाल का हिस्सा है।

+0

अन्ना, मदद के लिए धन्यवाद। यह समझ आता है। "लंबी रेखा" के संबंध में मैं सोच रहा था कि क्या अल्फा मान को 1 से 1 तक लाइन में बदलना संभव है। उदाहरण के लिए शुरुआती बिंदु 1 का अल्फा मान होगा और अंत बिंदु शायद .1 – jdross

+0

लाइन के साथ अल्फा को बदलना एक ढाल होगा और दुर्भाग्य से यह मानक मानक प्रस्तुतकर्ताओं में नहीं बनाया गया है। आपको एक कस्टम ओवरले रेंडरर बनाना होगा और मैन्युअल रूप से ड्राइंग करना होगा। [यह] (http://stackoverflow.com/a/20159374/467105) और [यह] (http://stackoverflow.com/a/19377748/467105) यदि आप उस पथ को आगे बढ़ाना चाहते हैं तो शुरू करने में आपकी सहायता कर सकते हैं। – Anna

+0

अच्छा स्पष्टीकरण @ एना –

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