【问题标题】:Get Google Map bounds, given a bounding box, without loading map?获取谷歌地图边界,给定一个边界框,而不加载地图?
【发布时间】:2012-05-15 15:21:44
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    有了这个,你可以:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多