2

我可以将缩放 Google 地图 api 限制为单独缩放吗?我的意思是我可以只有缩放 2 和 6 而不是 2-3-4-5-6 我看到我有最小缩放和最大缩放但我不希望缩放只会在 single 范围内。

问候, 约西

4

3 回答 3

3

你只能模仿这个。API 不允许您错过缩放。

zoom_changed事件不再告诉您有关更改的任何信息。在版本 2 中,您可以知道旧的缩放级别和新的级别。

因此,您必须在版本 3 中进行猜测。

如果您在缩放 2 并且用户放大,API 将转到缩放 3。因此您可以拦截zoom_changed事件,测试地图现在是否在级别 3 并将其设置为级别 6。您可以在其他方向:如果地图应该在 5 级(从 6 级开始),则将其设为 2。

// Untested code
google.maps.event.addListener(map,'zoom_changed',function () {
    if (map.getZoom() == 3) map.setZoom(6);
    if (map.getZoom() == 5) map.setZoom(2);
});

请注意,如果用户使用缩放滑块并直接从 2 移动到 5,这将无济于事:事件处理程序会将当前缩放视为 5,假设它仅移动了一步(从 6)并将其设置回 2。它如果滑块用于缩放 4 也无济于事。您需要决定在这些情况下应该发生什么。您可能想要使用一组有限的没有滑块的地图控件。

于 2012-05-21T13:18:21.610 回答
1

好吧,您可以在地图上单击时使用函数 getZoom()。检查缩放级别是否更改。然后使用 setZoom 设置适当的缩放级别单击此处获取帮助

于 2012-05-21T13:15:12.313 回答
1

您可以为 zoom_changed 事件添加监听器,检查缩放,并根据接近 2 还是接近 6 来设置缩放。

(假设“地图”变量包含地图的一个实例)

google.maps.event.addListener(map, 'zoom_changed', function() {

  var currentZoom = map.getZoom();
  if (currentZoom !== 2 && currentZoom !==6) {
    if (currentZoom <=4) {
      map.setZoom(2);
    } else {
      map.setZoom(6);
    }
  }

});
于 2012-05-21T13:22:40.140 回答