Google地图:获取用户绘制的多边形中包含的点数?

时间:2010-07-21 02:32:45

标签: google-maps gis postgis

当地房地产经纪人想要将谷歌地图添加到他的网站上,以显示他的列表。但是,他希望网站访问者能够在地图上绘制任意多边形,单击按钮,然后在这些边界内显示他所有的房屋,而不是仅仅向他的所有属性显示地图标记。

我的理解是这将采取一些GIS伏都教。但在我开始研究PostGIS的复杂性之前,我想知道是否有更好的方法来做到这一点?该网站运行在一个标准的LAMP堆栈上,但我希望说服他转移到Python / Nginx / PostgreSQL。

2 个答案:

答案 0 :(得分:4)

我认为没有必要转移到PostGIS。

  • 第一次机会是您的客户通过地址(123 fooview street)通过MLS数据库获取列表。将该列表更新为kml文件
  • 使用Google maps tutorialthis map tool绘制多边形
  • 使用this website(地图中提供的js)可以在多边形中执行点(如果任何地址在多边形边界内,则匹配)。我认为他们是在多个应用程序中完成的。

修改

在Google地图中执行point-in-polygon的另一种方法

答案 1 :(得分:1)

我认为这不会像你想象的那样需要那么多的GIS伏都教。我会分三步来处理这个问题:

  1. 为每个商家信息生成纬度和经度坐标。您可能已在数据库中拥有此信息。如果不这样做,可以使用几种免费工具。我们已经在工作中编写了一个Google地图应用程序,它直接链接到我们的SQL后端基础架构,如果需要,我可以帮助您在应用程序中进行设置。

  2. 使用GLatLng返回受访者感兴趣的任意点的坐标:http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GLatLng

  3. 使用一些数学来创建点的区域(如果您只允许4个点用于任意形状,则会更容易),然后使用for循环将每个列表的纬度/长度对与区域进行比较。 / p>

  4. 如果您的区域太大而无法将所有列表与任意区域进行比较,请根据州/县/城市/您可用的任何数据进行一些预过滤。

    希望这有帮助, -Chase