карта Google v3, как подходит с увеличением на месте пользователя - PullRequest
0 голосов
/ 09 января 2012

Я использую Google v3, я хочу, чтобы подгонять по центру объекта userPinLoc, у меня есть следующий код

 var bounds = new google.maps.LatLngBounds();
            bounds.extend(userPinLoc)// wants to center on userPinLocation
            for (i in nearestEntitiesToZoom) {
                    entity = nearestEntitiesToZoom[i];
                    var googleLatLng = new google.maps.LatLng(entity.latitude,entity.longitude);
                    bounds.extend(googleLatLng);
                }

                bounds.extend(userPinLoc);
                //googleMap.setCenter(userPinLoc) this not working

googleMap.fitBounds(bounds);

любое быстрое исправление после обновления я вставляю новый код

function setInitialZoom() {
        mapZoom = googleMap.getZoom(); 
        var bounds = new google.maps.LatLngBounds();
        bounds.extend(userPinLoc);
        for (i in nearestEntitiesToZoom) {
            entity = nearestEntitiesToZoom[i];
            var googleLatLng = new google.maps.LatLng(entity.latitude,entity.longitude);
            bounds.extend(googleLatLng);
        }

        google.maps.event.addDomListener(googleMap, 'bounds_changed', function() {
            googleMap.setCenter(userPinLoc);
        });

        googleMap.fitBounds(bounds);
        setTimeout(function() {
            google.maps.event.clearListeners(googleMap, 'bounds_changed');
        }, 3000);
    }

1 Ответ

0 голосов
/ 09 января 2012

Удалить setCenter из того места, где он находится в данный момент. Вам нужно иметь прослушиватель событий, когда границы карты меняются. Я думаю, что когда вы вызываете fitBounds, вы должны подождать, пока он будет перерисован, прежде чем вы сможете настроить центр. Одним из способов будет использование тайм-аута, но вы можете просто добавить это к вашей функции инициализации:

google.maps.event.addDomListener(googleMap, 'bounds_changed', updateCenter);

А затем создайте новую функцию для обновления центра, которая принимает значение userPinLoc (должно быть глобальной переменной):

function updateCenter() { 
    googleMap.setCenter(userPinLoc);
}
...