2012-05-15 80 views
0

我建立一个商店取景器,并希望实现以下工作流程:获取Google地图边界,给定边界框,无需加载地图?

  1. 用户输入的位置
  2. 我们使用谷歌地理编码
  3. 地址解析它我们审查边框
  4. 的地理编码结果
  5. 我们缩放地图,这些范围内适合存储指定的范围和查询
  6. 如果在地图范围内商店,显示它们在地图上
  7. 但是,如果有现在的地图边框内没有商店,放大再出一个级别,并重复(5),直到我们找到一些商店

以上是好的,但如果地图做的会更好UX实际上在一些商店被发现之前似乎并没有移动。

那么,是不是可以查询谷歌地图如下:鉴于边界框,我们可以发现正确放大谷歌地图的边界包含特定的边框,而无需实际加载谷歌地图?

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

回答

0

google.maps.LatLngBoundsapi-doc有一个方法:extend(point:LatLng)这将允许您扩展范围,以确保被调整的范围包括作为参数传递的LatLng点。 extend方法返回已调整的LatLngBounds

有了这个,你可以:

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