放大谷歌地图API

时间:2012-05-21 13:03:03

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

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

此致 贝纳

3 个答案:

答案 0 :(得分: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,也无济于事。您需要决定在这些情况下应该发生什么。您可能想要使用一组有限的地图控件,这些控件没有滑块。

答案 1 :(得分:1)

你可以点击地图使用函数getZoom()。检查缩放级别是否已更改。然后使用setZoom设置适当的缩放级别click here for help

答案 2 :(得分:1)

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

(假设'map'变量包含地图的实例)

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);
    }
  }

});