如何使用平滑缩放(api V3)将谷歌地图标记居中?

时间:2010-11-30 17:05:40

标签: google-maps-api-3

我正在使用map.panTo()在标记之间有一个很好的平滑过渡,当我从一个位置列表中点击时,但我看不到类似的缩放方法......我想像这样的东西setZoom(13, 1500)其中1500是持续时间......

任何线索?

2 个答案:

答案 0 :(得分:0)

目前唯一可以缩放的原生函数是map.setZoom,它不允许你改变速度。

如果您想根据一组标记将地图设置为缩放级别,可以执行以下操作:

var bounds : LatLngBounds = new LatLngBounds(southwestmarker.getLatLng(), northeastmarker.getLatLng()); 
bounds.extend(someMarker.getLatLng());
//some more extend() here
map.setZoom(map.getBoundsZoomLevel(bounds)); 

答案 1 :(得分:0)

我发现如果缩放级别在当前缩放级别的2之内,map.setZoom将平滑过渡。

因此,如果地图设置为缩放10,并且我将其设置为12,则它将转换。但是,如果我将它设置为13则不会。

此外,您可以将缩放设置为非整数,但地图图块不会加载并显示“抱歉,我们这里没有图像”。

你可以尝试链接变焦,但我会轻松进出,所以看起来会不稳定。

如果转换超过2并且平滑很重要,您可以在其中一个地图DOM元素上手动编辑矩阵变换。它看起来像-webkit-transform: matrix(1, 0, 0, 1, -62, 71);。更改第1和第4个数字会影响比例,第一个是x刻度,第4个是y刻度。

矩阵与transform: matrix(xs, 0, 0, ys, xt, yt);类似,其中xsys是比例,将其设置为2将放大200%。此矩阵确实采用小数值,因此您可以缩放到1.1等。然后,您可以在转换结束时map.setZoom()到最终数字。

这确实有一些警告,因为它不是预期用途:

  • 转换时平移或缩放会将矩阵转换重置为Google自己的方法,从而打破矩阵转换。
  • 缩小比较困难,因为周围的图块(视口之外)没有加载 - 默认为灰色方块。你可能有一个复制的地图,其中包含当前地图大小的视口乘以你缩小的系数 - 所以如果你缩小所以你的地图是一半大小,那么视口将是双倍的。然后,您可以将视口放在顶部并在“真实”地图上设置缩放,转换调整后的视口地图并在完成时隐藏它。