0

私は次のようなGoogleマップを持っています:

var map_options = {        
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    streetViewControl: false
};
var map = new google.maps.Map(mapDiv, map_options);

マップにいくつかのマーカーを配置する ajax 呼び出しを実行し、その呼び出しでbeforeSend、ユーザーが選択した場所に基づいてマップのズーム レベルを変更します。これはすべてうまくてダンディです..

$.ajax({
    url: myServiceUrl,
    dataType: 'jsonp',
    beforeSend: function () {                    
        setMapZoom();
    },            
    success: function (data) {
        //do work
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert(errorThrown);
    }            
});

function setMapZoom() {    
    var z_level = getMapZoomLevel(googleplace.geometry.viewport);
    map.setCenter(googleplace.geometry.location);
    map.setZoom(z_level);
}

マップ API の呼び出しが非同期であるため、最初はまったく機能しませんでしたbeforeSend

ただし、今私の問題は、ズームを1回しか実行しないことです。たとえば、カナダのオンタリオ州トロントの地図を読み込みます。地図はトロントを中心に移動し、レベル 5 にズームします。完璧です。

次に、米国フロリダ州マイアミに移動します。中心はマイアミですが、ズームがレベル 9 (5 ではなく) であると判断され、map.setZoom(9) が呼び出されますが、ズームは 5 のままです。

フィードバックをいただければ幸いです。:)

ありがとう!

4

2 に答える 2

0

解決済み:

結局のところ..ここで仲間のコーダーが、ズームイベントでユーザー定義のリスナーをクリアするためにいくつかのコードを呼び出していました。彼はこれが明確な Google 定義のリスナーであることも知りませんでした.. :)

多分これは将来誰かを助けるでしょう。

于 2012-11-13T21:26:18.143 に答える
0

必要なビューポートがあります。それを使用してみませんか?

map.fitBounds(googleplace.geometry.viewport);
于 2012-11-13T21:01:16.177 に答える