2010-04-22 12 views
7

मैं Google मानचित्र v3 का उपयोग कर रहा हूं और मैं सर्वर डेटा में स्थान डेटा के जेसन संग्रह का निर्माण करता हूं। तो जब मैं इसे प्राप्त करता हूं, तो मैं उस संग्रह के माध्यम से पुन: प्रयास करता हूं और उनमें से प्रत्येक के लिए एक मार्कर ऑब्जेक्ट बनाता हूं।मैं मार्कर में अधिक जानकारी कैसे संग्रहीत करूं?

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

मेरे पास सर्वर से प्राप्त सभी स्थान को संग्रहीत करने के लिए एक सरणी है जो पुनर्प्राप्त जेसन ऑब्जेक्ट्स और उनके संबंधित मार्कर रखती है।

समस्या यह है कि, जब भी मेरे पास एक सरणी है जिसे मैं संदर्भित कर सकता हूं या फिर से सक्रिय कर सकता हूं, तब भी जब उपयोगकर्ता उस पर क्लिक करता है तो मार्कर ऑब्जेक्ट न केवल प्राप्त करने की आवश्यकता होती है, बल्कि स्थान वस्तु भी होती है, जो अधिक जानकारी संग्रहीत करती है।

मैंने ऑब्जेक्ट्स के इस सरणी को संयोजित करने की कोशिश की और कॉलिंग ऑब्जेक्ट से सफलता के बिना इसका संदर्भ दिया, क्योंकि फ़ंक्शन मार्कर द्वारा कहा जाता है और स्थान ऑब्जेक्ट नहीं। इसलिए मैंने सोचा कि क्या Google मानचित्र मार्कर ऑब्जेक्ट में सामान्य जानकारी फ़ील्ड का उपयोग करना अधिक जानकारी स्टोर करना संभव है।

यदि अधिक जानकारी की आवश्यकता है तो कृपया मुझे बताएं।

धन्यवाद!

उत्तर

9

हाँ आप जावास्क्रिप्ट के लिए धन्यवाद कर सकते हैं। इस भाषा में, ऑब्जेक्ट्स और हैशटेबल्स एक ही चीज़ हैं ।

इस तरह आप अपने मार्कर पैदा कर रहे है:

var point = new google.maps.LatLng(40.70, -74.00); 
var myMarker = new google.maps.Marker({ position: point, map: map }); 

और यह कैसे आप अपने myMarker वस्तु के लिए एक अतिरिक्त संपत्ति जोड़ सकते हैं:

myMarker.myNewField = 100; 

आहा! संबंधित डेटा के अलग-अलग सरणी रखने की आवश्यकता नहीं है। एक सामान्य उद्देश्य क्षेत्र की कोई ज़रूरत नहीं है। बस एक नया संपत्ति नाम आविष्कार करें, और आप जाने के लिए अच्छे हैं।


A Survey of the JavaScript Programming Language डगलस Crockford द्वारा।

+0

यह वही है जो मैं ढूंढ रहा था! आपका बहुत बहुत धन्यवाद! – Sebastian

+0

मुझे पूरा यकीन नहीं है कि यह एक अच्छा जवाब है। क्या होगा यदि आपका myNewField Google मानचित्र एपीआई के गुणों के साथ टकराएगा, जिसे भविष्य में जोड़ा जा सकता है? ** यह एक हैक है जो सिर्फ काम करता है यदि आप भाग्यशाली हैं, स्वच्छ, अंतिम समाधान ** नहीं। – TMS

+0

@ टॉमस यह एक हैक नहीं है। ऑब्जेक्ट्स जावास्क्रिप्ट में हैशपैप्स हैं। Google मानचित्र API हैशपैप की कुछ कुंजियों का उपयोग करता है। वे भविष्य के संस्करणों में दूसरों का उपयोग कर सकते हैं, लेकिन एपीआई के एक विशिष्ट संस्करण से चिपके हुए इस तरह के टकराव को रोकना चाहिए। –

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