0

我正在构建一个商店查找器,并希望实现以下工作流程:

  1. 用户输入位置
  2. 我们使用 Google Geocoder 对其进行地理编码
  3. 我们检查边界框的地理编码结果
  4. 我们放大地图以适应指定的范围并查询这些范围内的商店
  5. 如果地图范围内有商店,则将它们全部显示在地图上
  6. 但是,如果地图边界框内现在没有商店,则进一步放大一级,然后重复(5)直到我们找到一些商店

以上很好,但如果地图在找到一些商店之前实际上没有移动,那将是更好的用户体验。

那么,是否可以按如下方式查询谷歌地图:给定一个边界框,我们是否可以在不实际加载谷歌地图的情况下找到包含该特定边界框的正确缩放的谷歌地图的边界?

我不确定这是否可能,因为它取决于我页面中地图 div 的宽度,我猜。

geocoder.geocode( {'address': search_text }, function(results, status) {
  if (status == google.maps.GeocoderStatus.OK) {
    map.panTo(results[0].geometry.location);
    map.fitBounds(results[0].geometry.bounds);
    var bounds_to_check_for_stores = map.getBounds();
    // QUESTION: get bounds_to_check_for_stores without the three preceding steps?
    } 
 }
4

1 回答 1

0

google.maps.LatLngBoundsapi-doc有一个方法:它将extend(point:LatLng)允许您扩展边界以确保调整边界以包含 LatLng作为参数传递的点。该extend方法返回一个LatLngBounds已调整的。

有了这个,你可以:

  1. 扩大地理编码查找的半径,直到找到合适的商店。
  2. 找到您希望使用的最近的商店或商店组。
  3. 从地图中检索当前边界:Map.getBounds()
  4. 调用LatLngBounds.extend以调整边界,使用.geometry.location您在步骤 2 中选择的商店的属性。
  5. 调用Map.panToBounds更改地图的视口,保持用户体验简单,因为只会对视图执行一次更改。
于 2012-05-15T16:02:40.213 回答