Google Maps API v3 JS map.fitbounds - PullRequest
       18

Google Maps API v3 JS map.fitbounds

0 голосов
/ 04 марта 2011

Я столкнулся с небольшой проблемой при использовании map.fitbounds. Я передаю две точки на карте и пользуюсь сервисом маршрутов вдоль этой стороны. Я использую map.fitbounds для центрирования карты между двумя заданными точками, но столкнулся с проблемой, когда карта фактически отображает вид на мир для этой конкретной части кода:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
    window.addEvent('domready', function() {    
        initialize();
    });

    var directionsDisplay;
    var directionsService = new google.maps.DirectionsService();
    var currentDirections = null;

    var clat = 52.03574;
    var clng = 0.58363;
    var dlat = 51.08577;
    var dlng = -1.31712;

    function initialize() 
    {
        var mOptions = {
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var map = new google.maps.Map($("mapCanvas"), mOptions);

        directionsDisplay = new google.maps.DirectionsRenderer({
            'map': map,
            'preserveViewport': true,
            'draggable': true//,
            //'suppressMarkers': true
        });
        directionsDisplay.setPanel($("directions_panel"));

        google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
            currentDirections = directionsDisplay.getDirections();
        });

        var start = 'Little Yeldham, Halstead, Essex CO9 4JZ, UK';
        var end = 'Winchester, Hampshire SO21, UK';
        var request = {
            origin: start,
            destination: end,
            travelMode: google.maps.DirectionsTravelMode.DRIVING,
            unitSystem: google.maps.DirectionsUnitSystem.IMPERIAL
        };
        directionsService.route(request, function(response, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                directionsDisplay.setMap(map);
                directionsDisplay.setDirections(response);
            }
        });

        var collectionPoint = new google.maps.LatLng(clat, clng);
        var deliveryPoint = new google.maps.LatLng(dlat, dlng);
        var bounds = new google.maps.LatLngBounds(collectionPoint, deliveryPoint);
        map.fitBounds(bounds);
    }

</script>

Может кто-нибудь помочь или указать мне в правильном направлении, как просто отобразить правильное расстояние отображения?

1 Ответ

1 голос
/ 21 марта 2011

РЕДАКТИРОВАТЬ: Только что нашел это сообщение с аналогичной проблемой. Поэтому возможное решение - создать пустые границы и начать их расширять.

Мой собственный код выглядит так:

var bounds = new google.maps.LatLngBounds();
for(var i=0;i<this.markers.length;i++){
    bounds.extend(this.markers[i].getPosition());
}
this.map.fitBounds(bounds);

У меня была точно такая же проблема в некоторых сценариях. Изменение порядка очков временно исправило проблему, но я до сих пор не выяснил, в чем реальная проблема, или это ошибка API GMaps.

Вам повезло?

...