谷歌地图和侧边栏

时间:2013-06-15 18:57:37

标签: javascript google-maps-api-3 google-places-api sidebar

我开始使用js和编码,我尝试使用谷歌地图+地点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上显示我

我的侧边栏代码中的错误是什么?

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

1 个答案:

答案 0 :(得分: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的{​​{1}}值。

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

以下是工作版本(没有markers部分,但仍然已损坏):http://jsbin.com/ayugun/54/

您可能希望了解有关JavaScript中闭包的更多信息:
Good answers about it on StackOverflow
Material from Google docs for the Maps.在事件监听器中使用闭包标题下的部分)。此示例与Google地图相关,非常适合展示现实生活中的封闭效果。