0

我开发了一个项目,显示带有多个标记的谷歌地图。我的问题是并非所有标记都显示在初始负载上。IE。如果我有四个标记,当地图最初加载时,地图中只有 2 个可见。我必须缩小才能查看其余的标记。

我该如何解决这个问题?

这是我通过 javascript 获取 Googlemap 的代码

window.onload=function(){                  
        var mapOptions={                 
            center:new google.maps.LatLng(markers[0].lat,markers[0].lng),                
            mapTypeId:google.maps.MapTypeId.ROADMAP        
        };
        var infoWindow=new google.maps.InfoWindow();
        var map=new google.maps.Map(document.getElementById("dvMap"),mapOptions);
        var bounds=new google.maps.LatLngBounds();
        for(i=0;i<markers.length;i++){                
            var data=markers[i];
            var latlng=new google.maps.LatLng(data.lat,data.lng);
            var marker=new google.maps.Marker({
                position:latlng,
                map:map,
                title:data.title             
            });
            (function(marker,data){
                google.maps.event.addListener(marker,"click",function(e){
                    infoWindow.setContent(data.description);
                    infoWindow.open(map,marker);
                });                
            })(marker,data);                
        } 
    }       
4

2 回答 2

2

自从我从事 Google Maps API 工作以来已经有一段时间了,但我相信您需要的是:

var bounds = new google.maps.LatLngBounds ();

//  Go through each...
for (var i = 0, LtLgLen = LatLngList.length; i < LtLgLen; i++) {
  //  And increase the bounds to take this point
  bounds.extend (LatLngList[i]);
}

//  Fit these bounds to the map
map.fitBounds (bounds);

您已经定义了边界数组并循环标记以将每个标记添加到边界数组然后 fitBounds。

有关原始文章,请参阅http://blog.shamess.info/2009/09/29/zoom-to-fit-all-markers-on-google-maps-api-v3/

于 2013-04-02T11:11:20.520 回答
1
for(i=0;i<markers.length;i++){                
            var data=markers[i];
            var latlng=new google.maps.LatLng(data.lat,data.lng);
            var marker=new google.maps.Marker({
                position:latlng,
                map:map,
                title:data.title             
            });
            bounds.extend(marker); // here is the code to add every marker plotted on bounds
            (function(marker,data){
                google.maps.event.addListener(marker,"click",function(e){
                    infoWindow.setContent(data.description);
                    infoWindow.open(map,marker);
                });                
            })(marker,data);                
        } 
map.setCenter(latlngbounds.getCenter()); // this will set the center of map to center of all markers
map.fitBounds(latlngbounds); // this will fit all the markers to screen
于 2013-04-02T11:11:27.137 回答