界限谷歌地图

时间:2012-12-01 01:54:09

标签: google-maps-api-3 viewport bounds fitbounds

我的谷歌地图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({});

1 个答案:

答案 0 :(得分:2)

你的问题的答案:

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

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

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