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, 'resize');

于 2012-09-12T14:05:29.943 回答