टी एल गूगल मैप्स कस्टम ओवरले, डॉमिश्रण के साथ बैकबोन दृश्य
PinView.prototype = _.extend(PinView.prototype, google.maps.OverlayView.prototype)
है "उचित" एक बैकबोन दृश्य के लिए जिस तरह से एक और "वर्ग" से विरासत?
लांग
पढ़ हम रीढ़ का उपयोग कर हमारी साइट redoing रहे हैं और कुछ मानचित्रण कार्यक्षमता सहित पर काम कर रहे हैं।
मुझे एक बैकबोन दृश्य मिला है जो ब्राउज़र विंडो के भीतर विशिष्ट बिंदुओं पर <div>
एस रखता है; यह Google की मानचित्र API को भौगोलिक निर्देशांक पर रखने के क्रम में विस्तार करने के लिए एक प्राकृतिक चीज़ की तरह लगता है।
कस्टम ओवरले उत्पन्न करने के लिए Google API के अनुसार, आप एक नई वस्तु बनाते हैं और उस ऑब्जेक्ट के लिए प्रोटोटाइप google.maps.OverlayView के नए उदाहरण पर सेट करते हैं। तुम तो उस वस्तु के शीर्ष पर तीन कार्यों को लागू ताकि वस्तु के प्रति जवाबी कार्रवाई:
onAdd
draw
onRemove
कहाँ onAdd
एचटीएमएल पैदा करने और फिर शीर्ष पर इसे लागू करने के लिए जिम्मेदार है मानचित्र का इसके बाद यह draw
पर कॉल करता है जो आपके द्वारा प्रदान किए गए लैट्लिंग जोड़े और सीमाओं के अनुसार सही ढंग से तत्व को स्थान देता है। जब आप अपनी परत से छुटकारा पाना चाहते हैं तो onRemove
कॉल किया जाता है।
इसलिए मैंने इन तीन विधियों को शामिल करने के लिए अपने दृश्य को संशोधित किया है (जो केवल रेंडर और असेंडर कॉल करें और मेरे संग्रह से बंधे हैं)। और फिर बनाने के लिए "जादू होता है" मैं कर रहा हूँ:
PinView.prototype = _.extend(PinView.prototype, google.maps.OverlayView.prototype)
यह सही लगता है? मैं व्यू और मॉडल के लिए कोड पोस्ट कर सकता हूं जिस पर यह आधारित है, लेकिन ईमानदारी से, वे इस उदाहरण के लिए अप्रासंगिक हैं - कोड काम करता है और मैं कस्टम div
एस बैकबोन मॉडल, व्यू और कंट्रोलर घटकों के माध्यम से जेनरेट करने में सक्षम हूं बिना किसी मुद्दे के मानचित्र पर, मैं जो पूछ रहा हूं, मुझे लगता है (और शायद यह प्रश्न प्रोग्रामर के लिए अधिक apropos है। इसलिए, मुझे बताएं और मैं इसे स्थानांतरित करूंगा)।
यह मेरे पिनव्यू को बैकबोन व्यू और Google मानचित्र ओवरले व्यू दोनों बनाने का सबसे आसान तरीका प्रतीत होता है, लेकिन मैं प्रोटोटाइप विरासत के साथ 100% सहज नहीं हूं यह जानने के लिए कि क्या मैं कुछ "गलत" कर रहा हूं या कुछ तोड़ रहा हूं कहीं सड़क के नीचे।
हम्म अपने "जनक" कक्षा में
initialize
दृश्य ..., यह एक PinView गूगल मैप्स के साथ BackboneView के रूप में बनाने के लिए वास्तव में क्लीनर हो सकता है उस ओवरले से जुड़े पिनव्यू पर एक संपत्ति के रूप में ओवरले व्यू। Google कक्षाओं के आंतरिक के बारे में निश्चित नहीं है क्योंकि वे सभी minifications के साथ थोड़ा अस्पष्ट हैं - लेकिन मुझे लगता है कि मैं इन दोनों को मिश्रण करने से बचाना चाहूंगा क्योंकि वे विभिन्न प्रकार के वर्ग हैं और कौन जानता है कि क्या हो सकता है (हालांकि अगर यह काम करता है तो कृपया हमें बताएं!)। कुछ और मैं पूरी तरह से थोड़ा और खेलना पसंद करना चाहता हूं - अगर मेरे पास केवल समय था! –यह काम कर रहा है, मुझे लगता है कि मेरा प्रश्न और अधिक था "क्या आप वास्तव में ऐसा कर रहे हैं" से "प्रोटोटाइपियल विरासत का उपयोग करके आप एकाधिक विरासत कैसे करते हैं?" बैकबोन सामान सुपर क्लीन और स्वागत है, इसलिए मैं किसी प्रकार के प्रोटोटाइप नेमस्पेस टकराव के बारे में चिंतित नहीं हूं, और जब Google स्रोत को छोटा कर दिया जाता है, जब आप डीबगर में इसके साथ खेल रहे हैं, ओवरलेव्यू के लिए प्रोटोटाइप() वस्तु वास्तव में भी सुपर सरल है। – tkone