【问题标题】:bounds google maps界限谷歌地图
【发布时间】:2012-11-19 06:53:29
【问题描述】:

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

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

【问题讨论】:

  • 这听起来很容易实现。你这样做有什么问题?您的代码当前编写为缩放以显示所有返回的标记。
  • 我的主要问题是这是我的第一个项目,我还在学习。就代码问题而言,我相信 bounds.extend(place.geometry.location);正在获取我的空边界变量并给它一个 lat 和 long 以显示所有标记。然后 map.fitBounds(bounds) 实际上是使用该边界来调整地图的大小以显示所有标记。我试过注释掉 map.fitBounds ,它似乎阻止了地图移动,但并非总是如此。此外,if 语句仅在添加的标记超出当前范围时才会缩放。

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


【解决方案1】:

你的问题的答案:

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

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

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

【讨论】:

  • 我尝试删除 map.fitBounds 和如果 marker.length == 1 时更改视口的函数。这适用于某些搜索,但地图边界有时仍会更改。谷歌搜索框 API 似乎超出了我为保留地图视口所做的努力。
  • 您的代码是地图的中心和缩放。发布显示问题的代码(jsfiddle 可能是最好的)。
猜你喜欢
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-25
  • 2013-10-10
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多