如何检测用户在最大缩放级别时?(Google Maps v3)

3
我正在将我的标记聚集在一起。当用户放大到最高级别时,我需要拆开聚类,以便用户可以查看各个项目的信息。由于不同类型的地图所使用的缩放级别数量不同,并且'maxZoom'可能已在mapOptions中明确设置,因此我该如何检测用户无法再进一步缩放(即缩放滑块处于最高点)?是否有一个缩放级别数字可供使用(也许是21)?或者这个数字会因不同情况而变化?这些情况会是什么?
我只需要在用户达到最大级别时才知道这个值,而不需要在缩放之前就知道它。
3个回答

7

Google Maps API提供了一个相关的服务,您可以这样使用它:

(new google.maps.MaxZoomService()).getMaxZoomAtLatLng(map.getCenter(), function(response) {
    if (response.status != google.maps.MaxZoomStatus.OK) {
      alert("Error in MaxZoomService");
      return;
    } else {
      if (map.getZoom() >= response.zoom) {
          //do sth with your clusterer
          //probably markerClusterer.setMaxZoom(response.zoom - 1);
          //or markerClusterer.setMap(null);
      }
    }
});

编辑:我在谷歌地图实用程序库的markerclusterer.js中找到了另一个解决方案,但最近它开始引起错误,我不确定它是否可靠:

map.mapTypes[map.getMapTypeId()].maxZoom;

哇,我很惊讶需要一个单独的异步服务来完成这个任务,但是谢谢 - 这正是我要找的。 - ͢bts
地图类型的maxZoom属性与zoomcontrol上设置的maxzoom级别不对应,看起来谷歌可能正在使用此服务动态设置最大缩放级别。 - chrismarx

0
从快速测试来看,似乎当z=19时,最大缩放程度已经达到街景级别。在几个国家进行了测试,结果没有变化。

谢谢,但我认为这可能不正确——当我缩放到所有文本位置(英国各地的各个点)时,map.getZoom()当前返回21。抱歉... - ͢bts
我在地图上关闭了街景视图。我想知道你的答案和我的之间的2个缩放级别差异是否是开启街景视图造成的。或者也许我在抓住一根稻草! - ͢bts

0

大多数城市地图会缩放到18级,但有些地图会超过这个级别,而且还有一些孤立的卫星视图可以达到23级。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接