Google Maps InfoWindow находится в центре карты? - PullRequest
1 голос
/ 01 декабря 2011

Я хочу разместить информационное окно в моем центре Google Maps в окне карты.Возможно ли это?

К сожалению, в параметрах InfoWindow нет параметров, подобных этому

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

Кто-то знает, как разместить InfoWindow в середине окна карты?

Ответы [ 3 ]

3 голосов
/ 22 декабря 2012

Сначала установите карту по центру маркера.Вы можете проверить событие domready в информационном окне и прокрутить карту немного влево и вниз, чтобы информационное окно было отцентрировано.

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)
});
3 голосов
/ 01 декабря 2011

Вы можете получить координаты центра вашей карты, а затем создать информационное окно с таким местоположением

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

или получить значение latLng одним куском: var latlng = map.getCenter();

1 голос
/ 26 марта 2014

Вместо перемещения карты или расчета высоты или ширины просто используйте следующую функцию.Хитрость здесь в том, чтобы отложить какое-то время, прежде чем мы откроем информационное окно.Мы должны установить Zoom и setCenter и задержать 300 миллисекунд, прежде чем мы откроем информационное окно, и API карт Google откроет информационное окно прямо в центре, как это должно быть:

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

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

Надеюсь, это поможет каким-то образом ...

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...