在没有加载地图的情况下,在给定边界框的情况下获取Google地图边界?

时间:2012-05-15 15:21:45

标签: javascript google-maps google-maps-api-3

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

  1. 用户输入位置
  2. 我们使用Google Geocoder对其进行地理编码
  3. 我们检查边界框的地理编码结果
  4. 我们缩放地图以适应指定的边界并查询这些边界内的商店
  5. 如果地图范围内有商店,请将它们全部显示在地图上
  6. 但如果地图边框内没有商店,请进一步缩小一级,然后重复(5)直到我们找到一些商店
  7. 以上情况很好,但如果地图实际上看起来没有移动,直到找到一些商店,那将是更好的用户体验。

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

    我不确定它是否可能,因为它取决于我页面中地图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?
        } 
     }
    

1 个答案:

答案 0 :(得分:0)

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

有了这个,你可以:

  1. 展开地理编码查找的半径,直至找到合适的商店。
  2. 找到您想要使用的最近的商店或商店组。
  3. 从地图中检索当前边界:Map.getBounds()
  4. 使用您在步骤2中选择的商店的LatLngBounds.extend属性,调用.geometry.location调整边界。
  5. 调用Map.panToBounds更改地图的视口,保持用户体验简单,因为只会对视图进行一次更改。