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 小さくズームされます。2 回目以降は、まったく同じ境界データを使用して正しいレベルにズームします。

fitBounds にバグはありますか? または私は何かを逃していますか?

4

1 に答える 1

0

もっと多くのコードを見たり、自分自身でこの癖を経験したことがなければ、それを言うのは難しい. ただし、Google のコードよりも自分のコードにバグがある可能性が高いので、最初に明らかな可能性を排除します。

したがって、私が最初に行うことは、JS デバッガーを使用して次のことを確認することです。

  • bounds両方とも同じです
  • 同じ実行パスを通過して、同じcanvas.fitBounds(bounds)呼び出しを両方ともヒットします。(そこに2回あります。どちらが実行されるかは、 を含む条件によって異なります。毎回異なるMapTypeId場合、それが癖を引き起こしている可能性があります。)canvasMapTypeId

それでも問題が解決しない場合は、次に探すべき場所はGoogle Maps API issue trackerかもしれません。

于 2012-07-23T02:43:48.980 に答える