在谷歌地图中搜索后相关缩放

时间:2014-05-19 13:21:08

标签: javascript google-maps google-maps-api-3

我刚刚在地图中添加了搜索框,但在搜索了某个地点(例如国家/地区或城市)之后,结果并不好。市场被设定在这个地方的中心,变焦很大。

如何根据地点的大小自动定义边界?当搜索结果包含多个位置时,缩放很好。

这是我的代码部分:

var input = (document.getElementById('pac-input'));
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);

var searchBox = new google.maps.places.SearchBox((input));

google.maps.event.addListener(searchBox, 'places_changed', function() {
    var places = searchBox.getPlaces();

    for (var i = 0, marker; marker = markers[i]; i++) {
        marker.setMap(null);
    }

    markers = [];
    var bounds = new google.maps.LatLngBounds();
    for (var i = 0, place; place = places[i]; i++) {
        var image = {
            url: place.icon,
            size: new google.maps.Size(71, 71),
            origin: new google.maps.Point(0, 0),
            anchor: new google.maps.Point(17, 34),
            scaledSize: new google.maps.Size(25, 25)
        };

        var marker = new google.maps.Marker({
            map: map,
            icon: image,
            title: place.name,
            position: place.geometry.location
        });

        markers.push(marker);

        bounds.extend(place.geometry.location);
    }

    map.fitBounds(bounds);
});

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

在地方结果中使用google.maps.fitBoundsgeometry.viewport

仅在存在单个结果时才有效(或者您可以使用第一个结果的视口)。

for (var i = 0, place; place = places[i]; i++) {
    var image = {
        url: place.icon,
        size: new google.maps.Size(71, 71),
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(17, 34),
        scaledSize: new google.maps.Size(25, 25)
    };

    var marker = new google.maps.Marker({
        map: map,
        icon: image,
        title: place.name,
        position: place.geometry.location
    });

    markers.push(marker);
}

map.fitBounds(places[0].geometry.viewport);