1

我在生成 Google 地图时遇到了一个小问题。

我正在寻找一种在调整大小后重新居中地图的方法。我的功能允许调整大小,但我看不到中心点。

function initialise() {
    var myMap = document.getElementById('map_div');
    google.maps.event.trigger(myMap, 'resize');       
};
4

2 回答 2

0

我认为触发谷歌地图resize不会影响谷歌地图的位置。但是,您可以使用以下方法设置/获取中心位置

map.getCenter();
map.setCenter(position);

这是您的完整代码:

function initialise() {
    var myMap = document.getElementById('map_div');
    var centerPosition = myMap.getCenter();  //get the center position
    google.maps.event.trigger(myMap, 'resize');      
    myMap.setCenter(centerPosition);    // re-center the position
};

希望这可以帮助。

于 2013-09-12T11:22:15.137 回答
0

2016 年 5 月 23 日的 API v3.24需要不同的方法:

var myMap = null, myPlace = null;

function initialiseGmapsStuff(){
    myPlace = new google.maps.LatLng( 51.482496, 0.00 ); // Greenwich
    var mapOptions = {
            zoom: 16, 
            center: myPlace,
            mapTypeId: google.maps.MapTypeId.SATELLITE, 
            scrollwheel: false, // Disable Mouse Scroll zooming (Essential for responsive sites!)
        };  
    myMap = new google.maps.Map(document.getElementById('gmaps-container'), mapOptions);
    google.maps.event.addDomListener( window, 'resize', $.throttle( 250, function(){ 
        if( myMap !== null && myPlace !== null ){
            myMap.setCenter( { lat: myPlace.lat(), lng: myPlace.lng() } );
        }
    } )
    );
}
google.maps.event.addDomListener(window, 'load', initialiseGmapsStuff);

注意我对jQuery.throttle的使用——它不是必需的,但推荐使用。如果您不使用 jQuery,您显然应该使用某种原生形式的节流。

于 2016-07-18T08:02:12.317 回答