1

我的谷歌地图 API 地图缩放显示谷歌地点搜索后添加的所有标记。在移动地图上,这可能需要一些时间来加载,并且作为骑自行车者的这个应用程序,我更喜欢只在视口中显示结果。我读过的大多数研究表明,不可能只在视口内返回结果。我是否可以在添加标记后保持地图边界不变?如果它只向我显示添加到当前边界的标记,那将是很棒的,除非只有一个标记返回,然后它应该缩放到该标记。因此,搜索诸如比萨饼之类的一般事物将在当前视口中显示许多比萨饼店,而无需平移或缩放。搜索特定地址将缩放到该标记,即使它位于视口之外。

 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({});
4

1 回答 1

2

你的问题的答案:

  • 我可以在添加标记后保持地图边界不变吗?

是是的。正如你所说,涉及删除 map.fitBounds。

要使地图居中并放大单个地址,请为此使用地理编码器(单独实施)或检查结果数,如果是一个,则将地图居中于结果上,如果有建议的视口在结果,使用它来居中和缩放地图[我认为是 map.fitBounds(place.geometry.viewport)]。

于 2012-12-01T12:32:49.663 回答