Google地图以最小缩放范围界定

时间:2011-11-07 02:46:51

标签: google-maps google-maps-api-3

我有一个简单的Google地图填充整个页面。 这是一个示例:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: Marker Animations</title>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  var stockholm = new google.maps.LatLng(59.32522, 18.07002);
  var map;

  function initialize() {
    var mapOptions = {
      zoom: 0,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: stockholm
    };

    map = new google.maps.Map(document.getElementById("map_canvas"),
            mapOptions);

   google.maps.event.addListener(map, 'idle', function() {
      var b = map.getBounds();
      document.getElementById("bounds").innerText = b.getSouthWest().lng() + ", " + b.getNorthEast().lng();
   });

  }
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width: 100%; height: 100%;">map div</div>
<div id="bounds" style="left: 100px; top: 0px; width: 300px; height: 30px; position: absolute; background-color: #a0a0a0;"></div>
</body>
</html>

在MINIMUM缩放级别,当你可以看到几张世界地图时,我希望经度界限为-180 - 180,但实际上我没有得到它。我的期望是错的,为什么?

在实际应用程序中,我有一个服务器端代码,可根据当前的地图边界从数据库中提取标记。

1 个答案:

答案 0 :(得分:2)

边界将在窗口的边界报告lat和lng - 即使地图已经包裹了几次。那么你窗口右下角的lat,lng是一点,左上角是另一个。

我有同样的问题,我最终做的是创建一个90,180到-90,-180的世界边界,然后看看它是否适合窗口。

var ne = new google.maps.LatLng(90, 180);
var sw = new google.maps.LatLng(-90, -180)
var world = new google.maps.LatLngBounds(ne, sw);
var fetchbounds;
if(map.getBounds().contains(ne) && map.getBounds().contains(sw)){
    fetchBounds = world;
}else{
    fetchBounds = map.getBounds();
}