我需要根据中心点和缩放级别计算地图的范围。
我想我可以暂时设置地图中心和缩放并调用map.getBounds()
,但我不愿意这样做(我需要禁用/重新启用一些事件处理程序)。
有人知道如何在v3中实现此功能吗?
我需要根据中心点和缩放级别计算地图的范围。
我想我可以暂时设置地图中心和缩放并调用map.getBounds()
,但我不愿意这样做(我需要禁用/重新启用一些事件处理程序)。
有人知道如何在v3中实现此功能吗?
这里使用了一点mootools,所以你需要编辑代码才能将其与其他库一起使用(应该很容易)。
/**
* Calculates the bounds this map would display at a given zoom level.
*
* @member google.maps.Map
* @method boundsAt
* @param {Number} zoom Zoom level to use for calculation.
* @param {google.maps.LatLng} [center] May be set to specify a different center than the current map center.
* @param {google.maps.Projection} [projection] May be set to use a different projection than that returned by this.getProjection().
* @param {Element} [div] May be set to specify a different map viewport than this.getDiv() (only used to get dimensions).
* @return {google.maps.LatLngBounds} the calculated bounds.
*
* @example
* var bounds = map.boundsAt(5); // same as map.boundsAt(5, map.getCenter(), map.getProjection(), map.getDiv());
*/
google.maps.Map.prototype.boundsAt = function (zoom, center, projection, div) {
var p = projection || this.getProjection();
if (!p) return undefined;
var d = $(div || this.getDiv());
var zf = Math.pow(2, zoom) * 2;
var dw = d.getStyle('width').toInt() / zf;
var dh = d.getStyle('height').toInt() / zf;
var cpx = p.fromLatLngToPoint(center || this.getCenter());
return new google.maps.LatLngBounds(
p.fromPointToLatLng(new google.maps.Point(cpx.x - dw, cpx.y + dh)),
p.fromPointToLatLng(new google.maps.Point(cpx.x + dw, cpx.y - dh)));
}
你在这里的使用情况是什么?
你可以在v2 API中计算这个:
map.getBoundsZoomLevel(bounds);
然而在v3 API中没有办法做到这一点。