0
function ZoomCenter(bounds, canvas)
{
  var center = bounds.getCenter();

  if (canvas.getMapTypeId() == "roadmap") canvas.fitBounds(bounds);
  else
  {
    var maxZoomService = new google.maps.MaxZoomService();

    maxZoomService.getMaxZoomAtLatLng(center, function(response)
    {
      if (response.status != google.maps.MaxZoomStatus.OK) alert("Error in Google MaxZoomService");
      else
      {
        var max_zoom = (response.zoom > SATMAP_MAX_ZOOM) ? SATMAP_MAX_ZOOM : response.zoom;

        canvas.setOptions( { maxZoom: max_zoom } );
        canvas.fitBounds(bounds);
        canvas.setOptions( { maxZoom: SATMAP_MAX_ZOOM} );
      }
    });
  }
}

这第一次被称为它缩放到比地图上适合的小1。第二次和第一次之后的每次,它将使用完全相同的边界数据缩放到正确的级别。

fitBounds 中是否存在错误?还是我错过了什么?

4

1 回答 1

0

如果没有看到更多代码并且我自己从未经历过这种怪癖,很难说。然而,我总是更怀疑我自己的代码中存在错误而不是谷歌的,所以我会首先消除那里明显的可能性。

因此,我要做的第一件事是使用 JS 调试器来确认:

  • bounds两次都相同
  • 它两次都通过相同的执行路径来调用相同的canvas.fitBounds(bounds)调用。(你在那里有两次。哪个被执行取决于你的条件涉及MapTypeId。如果每次canvas都有不同的,那可能会导致怪癖。)MapTypeId

如果这没有出现问题,那么下一个要查看的地方可能是Google Maps API 问题跟踪器

于 2012-07-23T02:43:48.980 回答