2011-12-13 2 views
37
未定義

のプロパティ「位置」を設定することはできません。 私はどこか他の場所でコードを使用していましたが、ここでうまくいきました - ここでの唯一の違いは、ポップアップウィンドウで使用しているようです。スコープの問題などがありませんか? geocoderParamsやlatlngなどのすべての変数は、必要なように埋められます。 エラーメッセージをグーグル表示しても何も価値がありませんでした。キャッチされない例外TypeError:私は私に奇妙なエラーメッセージ</p> <pre><code>Uncaught TypeError: Cannot set property 'position' of undefined </code></pre> <p>これは、ポップアップでGoogleの地図を表示するjQueryプラグインの内側にあるを与えるこのコードを持っている

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は、最初のパラメータは、地図のコンテナであり、通常div要素であるmapDiv:Nodeべきであると述べています。

あなたはおそらくGoogleマップが期待していないjQueryオブジェクトである$(this)を渡しています。コードの残りの部分はわかりませんが、おそらく$(this)の代わりにthisを渡す必要があります。

+7

document.getElementById( "my_div_id")を渡すだけでうまくいきます。 – Avishai

+2

jQuery要素に.get(0)を追加した場合にも機能します。 –

+0

@ user1912899 - 'this'がうまくいくときに' $(this).get(0) 'を実行することを指摘してください。なぜあなたはそれを必要としないjQueryオブジェクトを作成するのですか? – jfriend00

31

あなたはjQueryのを使用している場合は、あなたはバニラHTMLElement(例えばNode)の代わりに、jQueryの選択(例えばArray/NodeList$()クエリが返すに合格する必要があります。

コンソールコマンド追加した場合:置き換える、jQueryの配列から値を取得するために

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

console.log(self); 

を、それはのようなものを返します

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]は最初のものを選択します –

関連する問題

 関連する問題