2011-12-13 3 views
37

की 'स्थिति' मैं इस कोड को मुझे दे रही है अजीब त्रुटि संदेशUncaught TypeError: सेट नहीं कर सकता गुण अपरिभाषित

Uncaught TypeError: Cannot set property 'position' of undefined 

यह एक पॉप-अप में एक गूगल मानचित्र दिखाने के लिए एक jQuery प्लगइन के अंदर है। मैं कहीं और है, जहां यह ठीक काम किया कोड का उपयोग कर रहा था - फर्क सिर्फ इतना है कि यहाँ अब मैं एक पॉप अप विंडो में यह उपयोग कर रहा हूँ हो रहा है। क्या मुझे कोई गुंजाइश समस्या या कुछ याद आ रही है? geocoderParams और latlng जैसे सभी चर भर गए हैं जैसे उन्हें चाहिए। त्रुटि संदेश गुगल करने से कुछ भी मूल्यवान नहीं हुआ।

त्रुटि संदेश निकाल दिया जाता है जब google.maps.Map() कहा जाता है।

self = $(this) 
self.hide() 

geocoder = new google.maps.Geocoder 
geocoderParams = 
    address: self.data('address') || settings.address 
    region: settings.region 

results = geocoder.geocode geocoderParams, (results, status) -> 

if status == google.maps.GeocoderStatus.OK 
    latlng = results[0].geometry.location 

    mapOptions = 
    mapTypeControl: false 
    overviewMapControl: false 
    zoom: settings.zoomLevel 
    center: latlng 
    mapTypeId: google.maps.MapTypeId.ROADMAP 

    map = new google.maps.Map(self, mapOptions) 

self.show() 

उत्तर

66

मैं google.maps.Map() देखा और Google reference का कहना है कि पहले पैरामीटर एक mapDiv:Node जो नक्शे के लिए कंटेनर है और आम तौर पर एक div तत्व है होना चाहिए।

आप $(this) जो संभावना एक jQuery वस्तु जो नहीं है क्या गूगल के नक्शे की उम्मीद है है गुजर रहे हैं। मैं अपने कोड के बाकी पता नहीं है, लेकिन शायद तुम सिर्फ $(this) के बजाय this गुजर जाना चाहिए।

+7

आप इसे पार कर लेते हैं एक document.getElementById ("my_div_id") यह भी ठीक काम करता है। – Avishai

+2

यह भी काम करता है अगर आप अपने jQuery तत्व में .get (0) जोड़ते हैं। –

+0

@ user1912899 करने में -नहीं बिंदु '$ (this) .Get (0)' जब सादे 'काम करता है this'। एक jQuery ऑब्जेक्ट क्यों बनाएं जिसकी आपको आवश्यकता नहीं है? – jfriend00

31

आप jQuery का उपयोग कर रहे हैं, तो आप वेनिला HTMLElement (जैसे Node) के बजाय jQuery चयन (जैसे Array/NodeList) जो $() क्वेरी पारित करने के लिए की जरूरत है।

console.log(self); 
कुछ

यह वापस आ जाएगी की तरह:

आप एक सांत्वना कमांड जोड़ने

[ ▶ <div id="map_canvas"></div> ] 

jQuery सरणी से मान प्राप्त करने, बदल देते हैं:

map = new google.maps.Map(self, mapOptions) 

साथ :

map = new google.maps.Map(self[0], mapOptions) 
19

मैं जब कुछ इस तरह के साथ नक्शा आरंभ करने के लिए कोशिश कर रहा है इस त्रुटि का सामना करना पड़ा:

map = new google.maps.Map($('#map-canvas'), mapOptions); 

मैं पहली (और केवल) आइटम का चयन करके इसे हल करने में सक्षम था कि उसके बाद [0] जोड़कर चयनकर्ता रिटर्न चयनकर्ता:

+1

@mcflause यह कोई अजीब हैक नहीं है, $ फ़ंक्शन सिर्फ एक सूची देता है, [0] पहले व्यक्ति का चयन करता है –