簡體   English   中英

GLatLngBounds - 錯誤的中心和縮放級別

[英]GLatLngBounds - wrong center and zoom level

我正在嘗試使用GLatLngBounds來使地圖上的所有標記都可見。 以下是我正在做的一個小例子。

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太小了),並且由於某種原因標記出現在地圖的左上角(但所有這些都是可見的)。

我究竟做錯了什么?

編輯:忽略這個問題。 我犯了一個愚蠢的錯誤 - 我忽略了GClientGeocoder發出異步請求的事實,因此過早調用finalize()方法。

下面函數調用的最后一個參數指定縮放級別:

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

本文將簡要介紹縮放。 所以縮放級別有點太高了。

此外, 本教程還將介紹如何使地圖縮放以正確顯示一組標記。

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM