私は私に奇妙なエラーメッセージを与えるこのコードを持っています
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()
google.maps.Map()
を検索しましたが、 Googleリファレンス は、最初のパラメーターはmapDiv:Node
である必要があることを示しています。これは、マップのコンテナーであり、通常はdiv
です。素子。
あなたは$(this)
を渡していますが、これはおそらくGoogleマップが期待するものではないjQueryオブジェクトです。コードの残りの部分はわかりませんが、おそらく$(this)
の代わりにthis
を渡す必要があります。
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)
次のようなものでマップを開始しようとしたときに、このエラーが発生しました。
map = new google.maps.Map($('#map-canvas'), mapOptions);
セレクターが返す最初の(そして唯一の)アイテムを選択することで解決できました[0]
セレクターの後:
map = new google.maps.Map($('#map-canvas')[0], mapOptions);