如何使用google maps api搜索邮政编码给定半径内的所有点?

时间:2012-07-27 16:53:57

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

Google Maps API是否有办法,我可以在特定邮政编码的给定半径(英里)内找到所有红色气球点(固定在我的谷歌地图上的地址)?

例如......

  • 第一个输入框询问您的邮政编码。输入。

  • 第二个输入框(带有< options>的节框)要求您输入 半径以英里为单位,10英里,20英里,30英里......等等

  • 然后点击提交

  • 然后谷歌地图显示所有地址(存储自 json文件),在红色气球的谷歌地图上。

网上是否有免费的学习材料可以帮我构建这样的东西?

我整个上午都在阅读谷歌地图api的东西,并没有找到任何可以提供此功能的例子。

谢谢!

2 个答案:

答案 0 :(得分:2)

当您只想要近似和快速结果时,您还可以尝试空间填充曲线,即空间索引。查看xkcd漫画中的互联网地图。它使用希尔伯特曲线从互联网上打印地图。然后,您可以使用曲线转换地理位置并放宽最近邻搜索。在具有点数据类型和空间索引的许多数据库引擎中使用相同的曲线。

这里有一个javascript hilbert曲线:https://github.com/chrisdew/jshilbert。 这是一篇关于空间索引的博客:http://blog.notdot.net/2009/11/Damn-Cool-Algorithms-Spatial-indexing-with-Quadtrees-and-Hilbert-Curves。我写了一个php类hilbert-curve @ phpclasses.org。它还使用墨卡托投影。

答案 1 :(得分:2)

以下是您需要遵循的两个高级步骤:

1)您希望使用Google Geocoder API将该邮政编码(或许多不同形式的地址!)转换为纬度和经度坐标。

2)动态创建对脚本的GET请求,该脚本根据用户输入的距离(5英里,10英里等)查询数据库,如下所示:

var searchUrl = 'phpsqlajax_search.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;

查看我对此相关问题的回答,以便您可以获取用户输入并对地址进行地理编码:Store locatore, how to use/input my postion?

Google Maps API提供了大量文档,可帮助您查找数据库中距离某个纬度和经度坐标最近的项目。可在此处找到:https://developers.google.com/maps/articles/phpsqlsearch_v3

注意:文档使用PHP,Javascript和MySQL。

相关问题