2

グーグルマップに問題があります。マップを含むファイルにマップJSをロードし、ajax(およびjquery)を使用してモーダルdivを追加します。次の画像のようなものが私が得たものです:

正しい地図

ただし、モーダルを「閉じて」(div、つまりマップを削除して)再度開こうとすると、問題が発生します。

移動した地図

不完全に見えることは別として、マップはその左上隅がdivから数ピクセル離れていると考えているように見えます。マップを移動しようとすると、コンテンツが更新され、マップの「非表示」(この場合は不幸にも表示)の部分が削除されるため、これを保証します。ここでは、マップを表示するために使用するコードを残します(ただし、これは非常に簡単です)。

var marker = null, geocoder, latLng, map = null;
geocoder = new google.maps.Geocoder();
latLng = new google.maps.LatLng(41.3865, 2.1648);
var myOptions = {
    zoom: 16,
    center: latLng,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    disableDefaultUI: false
};
if(map === null) {
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}

function clearOverlays() {
    if (marker !== null) {
        marker.setMap(null);
        marker = null;
    }
}

function getPosition(address, title) {
    clearOverlays();

    geocoder.geocode({
            address : address,
            region : 'es'
        },
        function (results, status) {
            if (status === google.maps.GeocoderStatus.OK) {
                var result = results[0];
                latLng = result.geometry.location

                marker = new google.maps.Marker({
                    'title': title,
                    'map': map,
                    'position': latLng,
                    'animation': google.maps.Animation.DROP
                });
                map.setCenter(latLng);
            }
        }
    );
}

getPosition(place.address, place.title);

例のために、とplaceを含むオブジェクトであると仮定しましょう。addresstitle

4

1 に答える 1

4

バージョン2にはcheckresize()があり、このような場合にマップが中心点をシフトする場合に使用したことを覚えています。v3に相当するものは次のようなものだと思います。

google.maps.event.trigger(map、'サイズ変更');

于 2012-09-12T14:05:29.943 に答える