2011-03-11 15 views
5

मेरे पास एक कस्टम MKOverlayView है, जो एक साधारण रेखा खींचता है। drawMapRect: में मैं CGContextSetLineWidth(context, 30); सेट कर रहा हूं यह पूरी तरह से ज़ूम होने पर ठीक लग रहा है, लेकिन जब आप ज़ूम आउट करते हैं, तो रेखा अधिक से अधिक पतली हो जाती है। MKOverlayView संदर्भ कहता है कि यह स्वचालित रूप से मानचित्र के ज़ूम स्तर पर स्केल करता है। मैं इसे समान चौड़ाई खींचने के लिए कैसे मजबूर कर सकता हूं इससे कोई फर्क नहीं पड़ता कि मेरा ज़ूम स्तर क्या है? मैंने देखा है कि एमकेपोलीलाइन व्यू (और एमकेपोलीगोन व्यू) इसे सही तरीके से करते हैं ... जब भी आप समान चौड़ाई रखने के लिए समायोजित करने के लिए ज़ूम करते हैं तो आप लाइन की चौड़ाई का आकार बदल सकते हैं। मैं अपने ओवरले व्यू में यह कैसे कर सकता हूं?कस्टम MKOverlayView लाइन चौड़ाई

उत्तर

14

यह स्पष्ट नहीं है कि आप कौन सा परिणाम चाहते हैं। क्या आप ज़ूम के बावजूद लाइन चौड़ाई को समान रखना चाहते हैं या क्या आप लाइन को समान चौड़ाई के रूप में देखना चाहते हैं, जिस तरह से नक्शा दृश्य ज़ूम स्तर पर ध्यान दिए बिना आकर्षित करता है?

लाइन रखने के लिए कुछ हद तक स्थिर चौड़ाई कोई बात नहीं क्या, zoomScale से विभाजित करने की कोशिश:,

CGContextSetLineWidth(context, (30/zoomScale)); 

सड़कों के रूप में लाइन में एक ही चौड़ाई रखने के लिए का उपयोग MKRoadWidthAtZoomScale:

CGContextSetLineWidth(context, MKRoadWidthAtZoomScale(zoomScale)); 

आप कर सकते थे यदि आप चाहें तो सड़क चौड़ाई के लिए अतिरिक्त स्केलिंग भी लागू करें:

CGContextSetLineWidth(context, 1.5*MKRoadWidthAtZoomScale(zoomScale)); 
+1

मैं लाइन consista चाहता था कोई फर्क नहीं पड़ता कि क्या। मैंने कभी अनुमान लगाया नहीं होगा कि ज़ूमस्केले द्वारा विभाजित करना ऐसा ही करेगा, जो उसने किया था! मुझे पता था कि चौड़ाई और ज़ूमस्केल को विपरीत आनुपातिक होने की आवश्यकता है, जो विभाजित करता है; लेकिन मुझे नहीं लगता था कि यह रैखिक होगा। – GendoIkari