Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误:无法设置属性';位置';未定义的_Javascript_Google Maps_Google Maps Api 3_Coffeescript - Fatal编程技术网

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