web-dev-qa-db-ja.com

キャッチされないTypeError:未定義のプロパティ 'position'を設定できません

私は私に奇妙なエラーメッセージを与えるこのコードを持っています

Uncaught TypeError: Cannot set property 'position' of undefined

これは、Googleマップをポップアップで表示する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()
37
user627542

google.maps.Map()を検索しましたが、 Googleリファレンス は、最初のパラメーターはmapDiv:Nodeである必要があることを示しています。これは、マップのコンテナーであり、通常はdivです。素子。

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

66
jfriend00

JQueryを使用している場合、jQueryの選択(例HTMLElement/Node)の代わりにVanilla 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)
31
Ryan

次のようなものでマップを開始しようとしたときに、このエラーが発生しました。

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

セレクターが返す最初の(そして唯一の)アイテムを選択することで解決できました[0]セレクターの後:

map = new google.maps.Map($('#map-canvas')[0], mapOptions);
20
mattsoave