1

Google Maps API 有没有办法让我可以在某个邮政编码的给定半径(以英里为单位)内找到所有红色气球点(固定在我的谷歌地图上的地址)?

例如...

  • 第一个输入框要求您输入邮政编码。输入它。

  • 第二个输入框(带有 < options > 的部分框)询问您以英里、10 英里、20 英里、30 英里等为单位的半径

  • 然后你点击提交

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

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

我整个早上都在阅读 google maps api 的东西,但没有找到任何可以提供这个的例子。

谢谢!

4

2 回答 2

2

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

在这里,您有一个 javascript 希尔伯特曲线: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。它还使用墨卡托投影。

于 2012-07-27T17:33:17.267 回答
2

以下是实现此功能需要遵循的两个高级步骤:

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

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

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

查看我对这个相关问题的回答,以便您可以接受用户输入并对地址进行地理编码:商店定位,如何使用/输入我的位置?

Google Maps API 提供了有关在数据库中查找与某个纬度和经度坐标最近的项目的大量文档。可以在这里找到:https ://developers.google.com/maps/articles/phpsqlsearch_v3

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

于 2012-07-27T17:57:48.497 回答