谷歌地图Javascript API v3:如何根据地址细节自动/轻松调整缩放级别?反之亦然?

时间:2011-04-09 21:14:25

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

分别根据地址细节调整缩放的2个问题,反之亦然:

  1. 就像谷歌地图一样,当用户时 输入'usa','Washington'或'New 约克',谷歌地图将放大 不同的水平。这取决于如何 具体的用户输入是。

    我已经阅读了谷歌地图 api docs关于自动化这个,但没有用。是 有什么简单的方法来实现这个目标吗?

  2. google api docs about reverse geolocating,formatted_address 可能是8级 “detailness”

    如果用户缩放到特定级别 并在那里定义一个标记 任何简单的方式返回 formatted_address的“corresonding detail level”?或者我需要自己对逻辑进行硬编码?

  3. P.S。我不需要整个详细的代码,我只需要正确的思考方式就可以轻松地自动完成。

2 个答案:

答案 0 :(得分:2)

  

我已经阅读了谷歌地图api文档关于自动化这个,但没有用。有没有简单的方法来实现这个目标?

重新1.当您向Google发送地理编码请求时:

http://maps.google.com/maps/api/geocode/xml?address=usa&sensor=false

您将获得viewportbounds元素。这些矩形显示找到的项目的边界,以及最佳的地图视口以完整显示它。它适用于任何类型的实体,如国家,州和城市。

- <viewport>
- <southwest>
  <lat>-5.7034477</lat> 
  <lng>-161.2792988</lng> 
  </southwest>
- <northeast>
  <lat>64.7366415</lat> 
  <lng>-30.1464832</lng> 
  </northeast>
  </viewport>

您可以使用fitBounds()方法缩放地图以适应其中一个。

Re 2。)

  

问题2是基于缩放调整显示的地址细节。当地图被手动缩放到无法识别街道的水平时,应显示粗略的区域信息而不是详细的街道地址信息

据我所知,这是不可能的:没有办法掌握当前的细节水平。您必须根据数字缩放级别手动估算它 - 何时应显示城市,何时应显示道路等。

答案 1 :(得分:0)

您想要查找Google-Api的getBound方法。 Google地图范围由其空间索引定义。您想查找可以找到您的位置的图块索引。简化getBound以查找此索引,否则需要使用空间填充曲线或空间索引来计算索引。你想寻找Nick的空间索引quadtree hilbert曲线博客。