我有一张地图,显示每个引脚的引脚和信息窗口。缩放级别为 9,在该缩放级别,某些引脚不显示。我需要动态控制缩放级别,以便一次显示地图画布中的所有图钉。
问问题
1472 次
2 回答
3
有一个 LatLngBounds 对象。在创建每个标记时,您希望扩展边界以包含每个标记的位置。然后在最后调用 fitBounds 方法来调整地图的大小以适合所有标记。
function initialize() {
var arrPoints = [
{
lat: 51.498725,
lng: -0.17312,
description: "One",
price: 1.11
},
{
lat: 51.4754091676,
lng: -0.186810493469,
description: "Two",
price: 2.22
},
{
lat: 51.4996066187,
lng: -0.113682746887,
description: "Three",
price: 3.33
},
{
lat: 51.51531272,
lng: -0.176296234131,
description: "Four",
price: 4.44
}
];
var centerLatLng = new google.maps.LatLng(51.532315,-0.1544);
var map = new google.maps.Map(document.getElementById("map"), {
zoom: 15,
center: centerLatLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// create the Bounds object
var bounds = new google.maps.LatLngBounds();
var homeMarker = new google.maps.Marker({
position: centerLatLng,
map: map,
icon: "http://maps.google.com/mapfiles/ms/micons/green-dot.png"
});
for (var i = 0; i < arrPoints.length; i++) {
position = new google.maps.LatLng(arrPoints[i].lat, arrPoints[i].lng);
var marker = new google.maps.Marker({
position: position,
map: map
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, this);
});
// extend the bounds to include this marker's position
bounds.extend(position);
}
// make sure we include the original center point
bounds.extend(centerLatLng);
// resize the map
map.fitBounds(bounds);
}
于 2012-02-09T17:03:04.837 回答
0
您可以使用该map.fitBounds
功能缩放到特定的边界区域。要获得该区域,您只需遍历所有引脚并获取坐标的最小值/最大值。
无耻博客中已经有最终解决方案。
于 2012-02-09T16:12:52.420 回答