javascript - GLatLngBounds - 错误的中心和缩放级别

标签 javascript google-maps

我正在尝试使用 GLatLngBounds 使 map 上的所有标记都可见。下面是我正在做的一个小例子。

INV.createMap = function(containerId) {
    var map = null;
    var geocoder = null;
    var bounds = new GLatLngBounds();

    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById(containerId), {
            size: new GSize(600, 300)
        });
        map.setCenter(new GLatLng(54.729378425601766, 25.279541015625), 15);
        map.addControl(new GSmallZoomControl());
        geocoder = new GClientGeocoder();
    }

    return {
        markAdress: function(address, infoContentHtml) {
            if (map !== null && geocoder !== null) {
                geocoder.getLatLng(address, function(point) {
                    if (point) {
                        var marker = new GMarker(point);
                        GEvent.addListener(marker, 'mouseover', function() {
                            if (!map.getInfoWindow().getPoint().equals(this.getLatLng())) {
                                this.openInfoWindowHtml(infoContentHtml);
                            }
                        });
                        map.addOverlay(marker);
                        bounds.extend(point);
                    }
                });
            }
        },

        finalize: function() {
            map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
        }
    };
};

用法:

var m = INV.createMap('whatever');
var addresses = ...
for (var i = 0, l = addresses.length; i < l; i++) {
    m.markAdress('address...', 'htmlInfo...');
}
m.finalize();

问题是缩放级别完全错误(waaay 缩小得太小)并且由于某种原因标记出现在 map 的左上角(但它们都是可见的)。

我做错了什么?

编辑:忽略这个问题。我犯了一个愚蠢的错误 - 我忽略了 GClientGeocoder 发出异步请求的事实,因此过早调用了 finalize() 方法。

最佳答案

下面函数调用的最后一个参数指定缩放级别:

map.setCenter(new GLatLng(54.729378425601766, 25.279541015625), 15);

This article谈谈缩放。所以缩放级别有点太高了。

进一步this tutorial告诉您如何适应 map 缩放以正确显示一组标记。

希望对你有帮助

关于javascript - GLatLngBounds - 错误的中心和缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/939110/

相关文章:

javascript/jquery - firefox textarea 似乎没有注册值

php - 试图找到一个 "backdoor"到一个网站的分享/+1/绊倒的数量

Android 谷歌地图当前位置。添加新的锁定标记并在谷歌地图上画一条线

android - 在中国发布应用程序(阻止谷歌等)

java - 使用谷歌地图javascript api v3在谷歌地图上添加多个目的地

Javascript命名空间污染问题

javascript - 获取周数但每周五更改为下一周的脚本

javascript - 为什么我在 JSON 中转义引号的尝试不起作用?

html - 谷歌地图加载偏离中心

javascript - 仅存在一个标记时 Google map 信息窗口打开