2010-05-29 70 views
11

我是Google Maps API的新手。我希望获得关于实现以下功能的建议:每当页面加载时,地图将以美国为中心加载。想象一下美国的一个盒子,它有给定的经纬度来指定最小和最大边界。我需要以适当的缩放加载地图(并且需要禁用缩放),以便此框组成整个地图。Google Maps API - 加载美国

基本上,我想知道是否有一个函数,加载地图基于纬度/长边界(或某种方式来实现这一点),而不是加载给定缩放级别的地图。

回答

14

假设你正在使用的v3 API,您可能需要使用fitBounds方法如下:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps fitBounds</title> 
    <script src="http://maps.google.com/maps/api/js?sensor=false" 
      type="text/javascript"></script> 
</head> 
<body> 
    <div id="map" style="width: 500px; height: 350px;"></div> 

    <script type="text/javascript"> 
     var myOptions = { mapTypeId: google.maps.MapTypeId.ROADMAP }; 
     var map = new google.maps.Map(document.getElementById("map"), myOptions); 
     var geocoder = new google.maps.Geocoder(); 

     geocoder.geocode({'address': 'US'}, function (results, status) { 
     var ne = results[0].geometry.viewport.getNorthEast(); 
     var sw = results[0].geometry.viewport.getSouthWest(); 

     map.fitBounds(results[0].geometry.viewport);    
     }); 
    </script> 
</body> 
</html> 

截图:

Google Maps fitBounds

在上面的例子中,我发现了通过地理编码美国的视口。不过,您也可以通过传递东北和西南点来自己创建一个对象,并且方法将缩放并平移地图,以使其适合地图画布。

+0

谢谢! fitBounds()正是我正在寻找的 – hjk 2010-05-29 23:48:22

+0

@hjk:我回答了[几个月前的类似问题](http://stackoverflow.com/questions/2494756/fitbounds-in-google-maps-api-v3-不 - 不适合界/ 2496558#2496558)。它显示一个红色边界框'fitBounds'如何反应。红色边界框表示您将传递给'fitBounds'的'LatLngBounds'。 – 2010-05-29 23:51:54

+0

谢谢Daniel,这很有帮助。所以Google地图无法调整缩放的粒度?即他们的缩放级别是固定的? – hjk 2010-05-29 23:57:27

1

好吧,由于美国的大小和形状不会经常改变,您可以手动找到最佳设置并使用它们。

+1

是的,但我的边界框的坐标可能会改变... – hjk 2010-05-29 23:37:32