【问题标题】:How do I detect when a user is at the maximum zoom level? (google maps v3)如何检测用户何时处于最大缩放级别? (谷歌地图 v3)
【发布时间】:2011-11-22 17:27:15
【问题描述】:

我将我的标记聚集在一起。当用户放大到最高级别时,我需要分解集群,以便用户可以查看单个项目的信息。鉴于缩放级别的数量因使用的地图类型而异,并且可能已在 mapOptions 中明确设置了“maxZoom”,我如何检测用户何时无法进一步缩放(即缩放滑块位于其最高点)?是否只有一个缩放级别数字可以用于此(也许是 21)?还是这个数字会根据不同的情况而变化?这些场景会是什么?

我不需要在放大之前知道这个值:只有当用户达到最大级别时。

【问题讨论】:

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


    【解决方案1】:

    google maps api 有一个service,你可以这样使用它:

    (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 中也找到了一个解决方案(来自 google maps 实用程序库),但它最近开始导致错误,我不确定它是否可靠:

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

    【讨论】:

    • 哇,我很惊讶这需要一个单独的异步服务,但是谢谢 - 这就是我正在寻找的。​​span>
    • maptype 的 maxZoom 属性与 zoomcontrol 上设置的最大缩放级别不对应,看起来 google 可能正在使用此服务来动态设置最大缩放级别
    【解决方案2】:

    通过快速测试,在您到达街景级别之前,z=19 似乎是最放大的。在几个国家/地区进行了测试,它没有改变。

    【讨论】:

    • 谢谢,但我不认为这是正确的 - 当我放大所有文本位置(英国的各个点)时,map.getZoom() 当前返回 21。对不起...
    • 我在地图上关闭了街景。我想知道如果启用,您的答案和我的答案之间的 2 个缩放级别差异是否会出现在街景中。或者也许我正抓着稻草!
    【解决方案3】:

    大多数城市地图会放大到 18 级,但也有一些会超出此范围,并且有高达 23 级的孤立卫星视图。

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 1970-01-01
      • 2012-02-05
      • 2012-09-08
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多