Uncaught TypeError:无法设置未定义的属性“位置”

我有这个代码给我奇怪的错误消息

Uncaught TypeError: Cannot set property 'position' of undefined 

这是一个jQuery插件的内部,在popup窗口中显示Google地图。 我在其他地方使用代码,在那里工作得很好 – 唯一的区别似乎是我现在在一个popup窗口中使用它。 我是否缺less范围问题? 像geocoderParams和latlng所有的variables都应该填充。 使用Googlesearch错误消息没有任何价值。

当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() 

mapDiv:Node了一下google.maps.Map() , Google引用说第一个参数应该是一个mapDiv:Node ,它是map的容器,通常是一个div元素。

你传递的是$(this) ,这可能是一个jQuery对象,这不是谷歌地图所期望的。 我不知道你的代码的其余部分,但也许你应该通过this而不是$(this)

如果您使用jQuery,则需要传递vanilla HTMLElement (例如Node )而不是$()查询返回的jQueryselect(例如Array / NodeList )。

如果你添加一个控制台命令:

 console.log(self); 

它会返回类似于:

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

从jQuery数组中取得值,replace:

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

有:

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

我尝试用类似下面的方法启动地图时遇到了这个错误:

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

我能够解决它通过select第一个(也是唯一)的select器返回的选项后面加上[0]

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