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演示這個問題,以防萬一它澄清