私のグーグルマップAPIマップズームは、グーグルプレイス検索後に追加されたすべてのマーカーを表示するために配置されました。モバイルマップでは、ロードに少し時間がかかる場合があります。このサイクリスト向けアプリとして、ビューポート内にのみ結果を表示することを好みます。私が読んだほとんどの調査によると、ビューポート内でのみ結果を返すことはできません。マーカーが追加された後、マップの境界が変更されないようにすることはできますか?返されるマーカーが1つだけでない限り、現在の境界に追加されたマーカーが表示されるだけであれば、そのマーカーにズームする必要があります。したがって、ピザのような一般的なものを検索すると、パンやズームを行わなくても、現在のビューポートに多くのピザの場所が表示されます。特定のアドレスを検索すると、ビューポートの外にある場合でも、そのマーカーにズームします。
var input = document.getElementById('target');
var searchBox = new google.maps.places.SearchBox(input);
var bounds = map.getBounds();
searchBox.setBounds(bounds);
var markers = [];
service = new google.maps.places.PlacesService(map);
google.maps.event.addListener(searchBox, 'places_changed', function() {
var places = searchBox.getPlaces();
// alert("getPlaces returns "+places.length+" places");
for (var i = 0; i < gmarkers.length; i++) {
gmarkers[i].setMap(null);
}
gmarkers = [];
var bounds = new google.maps.LatLngBounds();
for (var i = 0, place; place = places[i]; i++) {
var place = places[i];
createMarker(place);
bounds.extend(place.geometry.location);
}
map.fitBounds(bounds);
// if (markers.length == 1) map.setZoom(17);
});
google.maps.event.addListener(map, 'bounds_changed', function() {
var bounds = map.getBounds();
searchBox.setBounds(bounds);
});
ib = new InfoBox({});