谷歌地图调整大小不居中

时间:2015-05-09 02:28:04

标签: javascript jquery google-maps

我的google地图对象的代码如下:

    geocoder.geocode({ 'address': googleAddress}, function (results, status){ 
        if (status == google.maps.GeocoderStatus.OK) { 
            var mapOptions = { zoom: 16, center:results[0].geometry.location, mapTypeId:google.maps.MapTypeId.ROADMAP}
            map = new google.maps.Map(element[0], mapOptions); 
            var marker1 = new google.maps.Marker({
                   position: results[0].geometry.location,
                   map: map,
                   title: googleAddress
                 });
            google.maps.event.addDomListener(window, "resize", function() {
                google.maps.event.trigger(map, "resize");
                map.setCenter(results[0].geometry.location);
            });
        }
    })

此元素在"显示内部开始:无" div,所以当我点击click事件来打开div时,我也会触发一个窗口事件' resize' (要加载整个地图......您可以在其他地方阅读有关为什么必须触发调整大小的问题):

showMap = function(){
        if ($('#map').hasClass('hide')){
            $('#map').removeClass('hide');
            $window.dispatchEvent(new Event('resize'));
        }
        else{
            $('#map').addClass('hide');
        }
    };

这个工作就像在完整div中显示地图一样,问题是我的中心是错误的。我有一个标记位于传入的地址(验证标记位于正确的位置),但标记在屏幕外(就在左上角)。如果缩小1次单击,则标记位于左上角。

我也尝试过(没有运气)

                google.maps.event.addDomListener(window, "resize", function() {
                    var center = map.getCenter();
                    map.setCenter(center);
                });

1 个答案:

答案 0 :(得分:0)

当您将地图置于地理编码结果的中心时,它的大小为零,将中心放在左上角。运行此功能时:

google.maps.event.addDomListener(window, "resize", function() {
   var center = map.getCenter();
   map.setCenter(center);
});

你没有改变中心。如果您希望将地理编码结果放在中心,请保留对其的引用(或标记),并在触发地图调整大小事件后将该位置放在中心位置。