Javascript 未捕获类型错误:无法设置属性';位置';未定义的
我有这个代码给我奇怪的错误信息Javascript 未捕获类型错误:无法设置属性';位置';未定义的,javascript,google-maps,google-maps-api-3,coffeescript,Javascript,Google Maps,Google Maps Api 3,Coffeescript,我有这个代码给我奇怪的错误信息 Uncaught TypeError: Cannot set property 'position' of undefined 这是jQuery插件的内部,用于在弹出窗口中显示google地图。 我曾在其他地方使用该代码,在那里它工作得很好-这里唯一的区别似乎是我现在在弹出窗口中使用它。我是否遗漏了范围问题或其他问题? 所有变量(如geocoderParams和latlng)都按其应有的方式填充。 用谷歌搜索错误消息没有发现任何有价值的东西 调用google.m
Uncaught TypeError: Cannot set property 'position' of undefined
这是jQuery插件的内部,用于在弹出窗口中显示google地图。
我曾在其他地方使用该代码,在那里它工作得很好-这里唯一的区别似乎是我现在在弹出窗口中使用它。我是否遗漏了范围问题或其他问题?
所有变量(如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()
并指出第一个参数应该是mapDiv:Node
,它是映射的容器,通常是div
元素
您正在传递
$(this)
,它很可能是一个jQuery对象,而Google maps并不期望它。我不知道剩下的代码,但也许你应该传递这个而不是$(这个)
如果你在使用jQuery,你需要传递普通的HTMLElement
(例如节点
)而不是jQuery选择(例如数组
/节点列表
),而$()
查询返回
如果添加控制台命令:
console.log(self);
它将返回如下内容:
[ ▶ <div id="map_canvas"></div> ]
与:
我在尝试使用以下内容启动映射时遇到此错误:
map = new google.maps.Map($('#map-canvas'), mapOptions);
我可以通过选择选择器返回的第一个(也是唯一一个)项来解决这个问题,方法是在选择器之后添加[0]
:
map = new google.maps.Map($('#map-canvas')[0], mapOptions);
如果您只是向它传递一个document.getElementById(“my_div_id”),它也可以正常工作。如果您将.get(0)添加到jQuery元素中,它也可以正常工作。@user1912899-执行$(此操作)毫无意义。如果只是简单地此有效,则get(0)
。为什么要创建一个你不需要的jQuery对象?@mcflause这不是什么奇怪的攻击,$函数只返回一个列表,[0]选择第一个
map = new google.maps.Map($('#map-canvas'), mapOptions);
map = new google.maps.Map($('#map-canvas')[0], mapOptions);