Google Maps API v3 JS map.fitbounds

时间:2011-03-04 17:30:52

标签: google-maps

使用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 个答案:

答案 0 :(得分:1)

编辑:刚刚找到类似问题的this post。因此,一种可能的解决方案是创建一个空边界并开始扩展它。

我自己的代码如下:

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);

在某些情况下,我遇到了完全相同的问题。反转点数顺序暂时解决了我的问题,但我仍然没有发现真正的问题是什么,或者它是否是GMaps API错误。

你有运气吗?