我有一个应用程序,用户可以在其中设置家庭位置和分页结果。主页和结果显示在地图上。随着地图上显示的结果发生变化,地图会调整为包含所有标记:
bounds = new google.maps.LatLngBounds();
//
// add markers to bounds
//
for (i = 0, l = markers.length; i < l; i ++) {
bounds.extend(markers[i].getPosition());
}
this.map.fitBounds(bounds);
但是,我还需要将地图置于“主页”位置的中心位置。主标记包含在边界内,但不一定是中心。
我知道this.setCenter(home)
会移动地图的中心,但这并不一定能确保所有标记仍然可见。
我想过找到与home
距离最远的点,并使用该半径作为设置 home
周围的界限的方式,而不仅仅是home
1}}。但如果没有必要将整个圆放入方形视口中,我宁愿这样做。
有没有人解决过这个问题?
链接的问题是重复的,但实际上并没有回答我的问题。 LatLngBounds.contains()需要LatLng并且不接受边界对象:LatLngBounds。然而,让我朝着正确的方向前进。
map.fitBounds(bounds);
map.setCenter(center);
newbounds = map.getBounds();
for (i = 0; i < l; i ++) {
if (!newbounds.contains(markers[i].getPosition())) {
contained = false;
}
}
if (!contained) map.setZoom(map.getZoom() - 1);