0

我是 js 和编码的初学者,我尝试使用 google map + places api 构建一个网站,所以当输入“餐厅或酒吧等”以在地图和侧边栏上展示此业务时。

http://jsbin.com/ayugun/46/edit

没有侧边栏代码,所有代码都可以正常工作:

var side_bar_html = "<a href='javascript:google.maps.event.trigger(gmarkers["+parseInt(gmarkers.length-1)+"],\"click\");'>"+place.name+"</a><br>";
     document.getElementById('side_bar').innerHTML += side_bar_html;

但我需要修复此代码以使其可用。所以当我输入“餐厅或酒吧等”时 在地图和#side_bar 上显示我

我的侧边栏代码哪里有错误?

对不起我的英语,不是很好,但我努力学习英语和编码。谢谢

4

1 回答 1

0

您的gmarkers变量未定义。它根本没有达到将其附加到“side_bar”的一部分。

另外,为什么不这样做呢?

 var sideClick = jQuery("<a class=side_click href='#'></a>");
 $(sideClick).html(place.name);
 $("#side_bar").append(sideClick);
 $(sideClick).on("click", function() {
     google.maps.event.trigger(gmarkers[parseInt(gmarkers.length-1)], "click");
 });

您的初始代码的问题 - 它无法访问place变量(除了这javascript:是一种不好的做法)。因此,通过将其全部放入回调中,google.maps.event.addListener(searchBox, 'places_changed', function() {..}它现在可以访问place变量并获取name当前循环的值place

我仍然不确定是什么gmarkers(也许,应该是markers(拼写错误)?)。它没有在任何地方宣布。

这是工作版本(没有gmarkers部分,它仍然坏了):http: //jsbin.com/ayugun/54/

您可能想了解更多关于 JavaScript 中的闭包:
StackOverflow 上关于它的好答案
来自 Google 文档的地图材料。在事件侦听器标题中使用闭包下的部分)。这个例子与谷歌地图有关,非常适合展示现实生活中的封闭。

于 2013-06-15T20:01:13.627 回答