【问题标题】:Google maps and places sidebar谷歌地图和地点边栏
【发布时间】:2013-06-15 18:57:37
【问题描述】:

我是 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 上显示我

我的侧边栏代码哪里出错了?

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

【问题讨论】:

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


【解决方案1】:

您的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 变量并获取当前循环place 的name 值。

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

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

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

【讨论】:

  • 谢谢,但是当我点击侧边栏链接时不会打开信息窗口(模态框)?
  • 当我输入新搜索时,侧边栏链接没有改变,为什么?
  • 1) 查看代码 - 在回调中它执行“google.maps.event.trigger(gmarkers[parseInt(gmarkers.length-1)], “click”);”。这仍然是坏的。我不知道gmarkers 是什么——它是未定义的。您必须弄清楚要传递的变量。 2)你是什么意思?它适用于 Chrome 和 Firefox,它在执行新搜索时向侧边栏添加新链接。我只是展示了工作结束,你可以随意改变规则 - empty() 侧边栏关于变化等等。
  • 是的,更改侧边栏必须使用新链接拉出,而且当我点击侧边栏链接时,也不会在地图中打开信息窗口?
  • 我不知道gmarkers是什么,因为我从一个例子中复制了这部分代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多