GeoCouch初体验

GeoCouch是一个CouchDB的插件,提供地理位置索引的查询,我们知道CouchDB是通过MapReduce建立视图的方式来进行非动态的查询,GeoCouch通过修改CouchDB的B-Tree索引为R-Tree的形式来实现空间索引。当然,由于CouchDB一切皆增量的模式,这里的R-Tree也是增量模式的。

下面就是一个使用GeoCouch实现的小应用,主要是将全球的KFC,麦当劳和汉堡王三家快餐店的地理位置和营业时间放到GeoCouch中建立索引,然后通过与Google Map结合,可以查找任意线路上这三家快餐店的位置,可以进行快餐店筛选,还可以对营业时间进行筛选。

同时,本项目大量地运用了开源和开放的项目,也值得我们学习。

其主要运用到的技术有:jQueryunderscore.jsGoogle route boxer 以及 Bootstrap

项目的Demo在这里:nedeco POI Search

工作原理

在页面中下部,你可以选择线路并进行相应的快餐店查询,当你点击calculates按钮时,主要进行了以下一些工作:

  1. 利用 Google Maps 进行路径计算
  2. 通过 Google Maps Autoboxer 计算出路线周围区域,以方块形式表示
  3. 本系统再将这些区域块输入到GeoCouch中进行查询
  4. GeoCouch 返回在这些区域中的所有快餐店信息
  5. 前端程序再将这些快餐店标识到地图图上,并将这些快餐店的信息存起来,以用于进一步的筛选
  6. 当你进行进一步的筛选时,可以在上面存储的数据中进行条件查找并去掉不合条件的快餐店,不需要再靠服务端进行计算

性能

程序的主要架构方式是后端使用三台机器进行地理位置计算,前端再使用Varnish做Http缓存。所以重复的查询基本会在Varnish中命中,根本没有计算工作,速度会非常快。进行60次请求耗时在1秒左右。也就是每个请求10多毫秒。

筛选操作

此系统提供对查询出的快餐店进行进一步的筛选,包括对快餐店品牌和营业时间的筛选。这一切都是在前端完成的,所以速度很快,主要是通过underscore.jsselect操作来完成。

UI

UI使用了Twitter发布的前端框架Boostrap来实现。

来源:development.nedeco.de

anyShare一切看了好文章不转的行为,都是耍流氓!
          

无觅相关文章插件,快速提升流量