javascript - 使用 fitBounds 时 Google Maps v3 : Enforcing min. 缩放级别

标签 javascript google-maps google-maps-api-3 fitbounds

我正在 map 上绘制一系列标记(使用 map API 的 v3)。

在 v2 中,我有以下代码:

  bounds = new GLatLngBounds();

  ... loop thru and put markers on map ...
  bounds.extend(point);
  ... end looping

  map.setCenter(bounds.getCenter());
  var level = map.getBoundsZoomLevel(bounds);
  if ( level == 1 ) 
    level = 5;
  map.setZoom(level > 6 ? 6 : level);

这可以很好地确保 map 上始终显示适当级别的详细信息。

我试图在 v3 中复制此功能,但 setZoom 和 fitBounds 似乎没有合作:

... loop thru and put markers on the map
  var ll = new google.maps.LatLng(p.lat,p.lng);
  bounds.extend(ll);
... end loop

var zoom = map.getZoom();
map.setZoom(zoom > 6 ? 6 : zoom);
map.fitBounds(bounds);

我尝试了不同的排列(例如,将 fitBounds 移动到 setZoom 之前),但我对 setZoom 所做的任何操作似乎都不会影响 map 。我错过了什么吗?有办法做到这一点吗?

最佳答案

this discussion on Google Groups我发现基本上当您执行 fitBounds 时,缩放是异步发生的,因此您需要捕获缩放和边界更改事件。最后一篇文章中的代码对我进行了一些小的修改......就目前而言,它会阻止你完全缩放超过 15,因此使用第四篇文章中的想法将标志设置为仅在第一次执行此操作。

// Do other stuff to set up map
var map = new google.maps.Map(mapElement, myOptions);
// This is needed to set the zoom after fitbounds, 
google.maps.event.addListener(map, 'zoom_changed', function() {
    zoomChangeBoundsListener = 
        google.maps.event.addListener(map, 'bounds_changed', function(event) {
            if (this.getZoom() > 15 && this.initialZoom == true) {
                // Change max/min zoom here
                this.setZoom(15);
                this.initialZoom = false;
            }
        google.maps.event.removeListener(zoomChangeBoundsListener);
    });
});
map.initialZoom = true;
map.fitBounds(bounds);

希望对你有帮助,

安东尼。

关于javascript - 使用 fitBounds 时 Google Maps v3 : Enforcing min. 缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2989858/

相关文章:

javascript - scrollTop 与 getBoundingClientRect().top

javascript - 引用错误: <Function> is not defined

javascript - 为什么我的 promise 哈希在传递的 promise 解决之前解决?

javascript - Uncaught referenceError google is not defined

javascript - 按国家/地区过滤谷歌地图搜索耳语者输出的地址

javascript - 如何自定义谷歌地图标记的颜色、形状和大小

javascript - 获取街道地址的最佳地理编码是什么?

javascript - 当用户选择与同一行其他列中选择的值相同时,显示带有错误消息的对话框

java - 在 Java 桌面应用程序中使用 Google map 的替代方案

javascript - 如何将圆圈分成谷歌地图中的扇区?