私は次のような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 のままです。
フィードバックをいただければ幸いです。:)
ありがとう!