Google Maps v3 API扩展边界。 Javascript方法?

时间:2010-08-31 14:45:40

标签: javascript google-maps

function initialize(){
// Creating a map
var map = new google.maps.Map(document.getElementById('map'), {
  zoom: 10,
  center: new google.maps.LatLng(53.0123601276819, -2.44519164333635),
  mapTypeId: google.maps.MapTypeId.ROADMAP
});

var m = [];

function addMarker(title, lat, lng) {
    m[m.length] = new google.maps.Marker({
        position: new google.maps.LatLng(lat, lng),
        map: map,
        title: title,  
        clickable: true,
        icon: 'http://domain.com/MVC/images/full.png' 
    });

} 

addMarker('Home', 53.0682143712504, -2.52150736731894);
addMarker('Away', 53.0123601276819, -2.44519164333635);
addMarker('Away', 59.0123601276819, -2.44519164333635);    

// Create a LatLngBounds object
var bounds = new google.maps.LatLngBounds(); 

for (var i = 0; i < m.length; i++) {
  // Insert code to add marker to map here

  // Extend the LatLngBound object
  bounds.extend(m[i]);

}
alert(m[0]);
map.fitBounds(bounds);
  document.write(getBounds());   

}

以上是我的代码。

我的目的是开发一个地图,显示无数的标记并平移缩放,使所有标记都适合我的屏幕。

我是JS的新手。

我的理解是

var m = [];

创建一个空数组。

然后每当我调用addMarker()时,细节都会添加到此数组m

在顶部,我设置了默认的缩放和中心点。

然后我添加各种标记。

然后我循环遍历m数组中的每个键,并使用此数据扩展边界。

据我了解,map.fitBounds(bounds);应重新定义适用于所有标记的缩放/中心。

没有。 我的所有标记都显示,但缩放/中心不会自动调整,我不明白为什么。

任何建议都将不胜感激。 感谢

2 个答案:

答案 0 :(得分:7)

您需要将LatLng对象传递给bounds.extend函数。

以下是代码:

....
bounds.extend(new google.maps.LatLng(lat, lng));
....

答案 1 :(得分:5)

以上是对上述答案的澄清,除非缺少括号和简短的说明,否则是正确的。

//make an empty bounds variable
var bounds = new google.maps.LatLngBounds();


//do your map stuff here
//special note: make sure your lat and lng are integers or googleMaps will error
var lat = 38.103;
var lng = -121.572;
bounds.extend(new google.maps.LatLng(lat, lng));


//adjust the viewport of the map
//special note: this only needs to be done once, don't put it in a loop
map.fitBounds(bounds);