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);