11

我刚刚开始使用 Google Maps API (v3.0),到目前为止已经取得了很大的成功。我正在从数据库中加载一组具有纬度和经度值的对象,将它们传递到我的脚本中,然后在脚本中循环它们以将它们添加到地图中。

我正在使用“ bounds.extend()/ map.fitBounds()”方法来设置地图的缩放和边界(参见下面的代码),它第一次按预期工作;但是,如果我清除现有标记,获取另一组对象,并在同一个地图实例上做同样的事情,它会错误地设置边界,通常会导致最小缩放(宇航员的视图)。

我的怀疑是我的地图对象对我给它的前一组边界有一些记忆,我需要在分配新的边界之前找到一种方法来清除这些边界,但我真的不能太确定。

任何帮助是极大的赞赏!

var locationList = [];
for (var i = 0; i < mapPoints.length; i++) { // mapPoints is a collection of DTOs
    var mapPoint = mapPoints[i];
    var location = new google.maps.LatLng(mapPoint.Latitude, mapPoint.Longitude);
    locationList.push(location);

    var marker = new google.maps.Marker({
        map: map,
        icon: '/Content/images/map/' + mapPoint.Status.Icon,
        shadow:  '/Content/images/map/shadow.png',
        position: location
    });
    markers.push(marker); // markers is an Array that is managed outside this loop
}

var bounds = new google.maps.LatLngBounds();
for (var j = 0; j < locationList.length; j++) 
    bounds.extend(locationList[j]);
map.fitBounds(bounds);
4

2 回答 2

21

可以这么说,这不是答案,而是我在 Google Maps Javascript API v3 组中的一个线程上发现的一个(有点骇人听闻的)解决方法:

//map.fitBounds(bounds);
setTimeout( function() { map.fitBounds( bounds ); }, 1 ); 
于 2010-10-06T15:07:18.617 回答
0

如果上述答案对您不起作用(对我不起作用),则问题可能出在引导程序中(假设您正在使用它)。当我在其中嵌入地图对象时,引导模式会特别产生各种不稳定的行为。如果/当我在那里放置“警报”时会奇怪地纠正自己。无论如何,我通过构建自己的模式解决了我所有的问题(即,不使用引导模式)。

于 2015-01-02T00:50:10.423 回答