0
我有一个侧栏显示当前谷歌地图的地图视图中的标记的名称。侧边栏内容更改为地图被感动:添加填充到谷歌地图bounds.contains()
google.maps.event.addListener(map, 'bounds_changed', function() {
document.getElementById("list").innerHTML = "";
var mklen = mkrs.length,
a = 0,
bnds = map.getBounds();
for (a; a < mklen; a++) {
var themk = mkrs[a];
if (bnds.contains(themk.getPosition())) {
var myli = document.createElement("li");
myli.innerHTML = themk.title;
document.getElementById("list").appendChild(myli);
}
}
});
这是工作正常,但问题是,bounds.contains()是非常严格的 - 如果只是标记的尖底是在地图上(即,你看不到它的99%)它被列在边栏上。我想要的是只有完全显示的标记通过该测试。
有一对夫妇的,我能想到的,我不能相信别人没碰到这个问题的办法,所以我不知道是否有偏好,记载下列事项:
- 采取的界限,并重新计算它们比实际的边界更小,使用这些新边界的bounds.contains()测试
- 计算,其中的标记图标的边缘(我猜使用
fromDivPixelToLatLng
),然后检查两个ne和sw的边角在范围内,如果是的话,列出项目
在你问之前,我还没有尝试过其中的任何一种 - 我更多地寻找哪种方法最好甚至可能的建议,或者如果有另一种方法可以做到这一点。这里有一个fiddle演示这个问题,以防万一它澄清