【发布时间】:2010-10-25 10:14:07
【问题描述】:
这就是我想要做的。我有大约 160 个名胜古迹。用户输入我使用 Google 进行地理编码的地址(邮政编码、完整地址等)。然后,我创建一个以该点为中心的 Google 地图,并为地图上的每个兴趣点添加一个标记(使用 MarkerManager)。到目前为止一切顺利。
我想在地图旁边显示与正在显示的标记相对应的项目列表。当用户拖动窗口,或者放大或缩小,或者其他什么时,我想更新这个列表。如果一次显示的项目太多,我想向用户显示一条消息。
最好的方法是什么?我尝试向 MarkerManager 添加一个侦听器,以便在它更改时我可以确定哪些标记仍然显示。但是,该事件似乎没有像我预期的那样触发,即当显示的标记发生变化时。另外,我怀疑每次像这样循环超过 160 多个标记是否有效。
GEvent.addListener(mgr, "changed",
function(bounds, markerCount)
{
var visibleBounds = map.getBounds();
for (var i = 0; i < gmarkers.length; i++)
{
//alert(gmarkers[i].getPoint());
if (visibleBounds.containsLatLng(gmarkers[i].getLatLng())) {
// this will need to be replaced with an ajax call
// to get the details from the server
strHtml += "<div>Another item</div>";
count ++;
}
}
alert(count);
});
最好的方法是什么?
更新:此代码有效,但该事件似乎仅在地图移动某个最小距离时触发。因此,如果用户将地图拖动一小段距离,该事件似乎不会触发。
【问题讨论】:
标签: javascript google-maps google-maps-markers