谷歌地图InfoWindow放在地图的中心?

时间:2011-12-01 08:32:35

标签: google-maps-api-3

我想将InfoWindow放在地图窗口的谷歌地图中心。这可能吗?

不幸的是,像这样的InfoWindow选项中没有选项

var infowindow = new google.maps.InfoWindow({
    positionMiddleOfWindow: true    });

有人知道如何将InfoWindow放在地图窗口的中间吗?

3 个答案:

答案 0 :(得分:3)

您可以获取地图中心的坐标,然后使用该位置创建信息窗

var lat = map.getCenter().lat(); 
var lng = map.getCenter().lng();

或将latLng整合在一起: var latlng = map.getCenter();

答案 1 :(得分:3)

首先,将地图设置为标记的中心。您可以检查InfoWindow的domready事件,并向左和向下滚动地图,以便InfoWindow居中。

<强>的jQuery

pin=new google.maps.LatLng(50.00, 50.00);

marker=new google.maps.Marker({
    position:pin,
});

marker.setMap(map);
map.setCenter(marker.getPosition());

// The InfoWindow
myWindow = new google.maps.InfoWindow({
    content:'<p id="myId">My InfoWindow</p>',
});

myWindow.open(map, marker);

google.maps.event.addListener(myWindow, 'domready', function() {
    // Get the actual height of the InfoWindow
    e = $('#myId').parent().parent().parent();
    h = parseFloat(e.height());
    w = parseFloat(e.width());

    // Move the map a little to the left and down
    map.panBy(-w/2, h/2)
});

答案 2 :(得分:1)

不要移动地图或计算高度或宽度,只需使用以下功能。这里的诀窍是在打开infoWindow之前延迟一段时间。我们应该设置缩放和设置中心并在打开infoWindow之前延迟300毫秒,谷歌地图api将在中心打开infoWindow它应该如何:

function OpenInfoWindowCentralized(map, infowindow, marker) {
    map.setZoom(16);
    map.setCenter(marker.getPosition());

    setTimeout(function() {
        infowindow.open(map, marker);
    }, 300);
}

我希望它在某种程度上有所帮助......

干杯