zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

[Android+LBS] LBS based on Symfony2 & MongoDB

2023-09-27 14:23:25 时间

深入浅出Symfony2 - 结合MongoDB开发LBS应用

 

起因:

如果通过经纬度去获取周边信息时,就很难像传统数据库那样做查询并进行缓存。

因为这是个相似性查询的问题。

 

MongoDB

  • 需求

我们假设有如下功能需求:

    • 显示我附近的人
    • 由近到远排序
    • 显示距离

 

  • 方案1:基于MySQL数据库

在lat,lng这个坐标附近的目标,并且按距离正序排列,SQL中的distance单位为公里。

SQL详见原网址。

 

  • 方案2:GeoHash索引,基于MySQL

优点:仅用一个字符串保存经纬度信息,并且精度由字符串从头到尾的长度决定,可以方便索引。

缺点:靠近每个方块边界两侧的点虽然十分接近,但所属的编码会完全不同。

 

  • 方案3:MySQL空间存储 (MySQL Spatial Extensions)

看起来这是使用MySQL处理地理位置信息的“官方解决方案”。但恰恰很可惜的是:它却不支持某些最基本的地理位置操作,比如查询在半径范围内的所有数据。

采用欧式空间的距离,简单来说,它给出的结果是两个点在三维空间中的直线距离,不是飞机在地球上飞的那条轨迹,而是笔直穿过地球的那条直线。

 

  • 方案4:使用MongoDB存储地理位置信息

MongoDB原生支持地理位置索引,可以直接用于位置距离计算和查询。

另外,它也是如今最流行的NoSQL数据库之一,除了能够很好地支持地理位置计算之外,还拥有诸如面向集合存储、模式自由、高性能、支持复杂查询、支持完全索引等等特性。

 

Symfony2

Symfony是一款基于MVC架构的PHP web开发框架。

 

 

但貌似,如果使用了Google自带的接口,是不是就可以屏蔽这些坑了呢。

Android基于LBS还有哪些值得关注的概念?

 

城市计算

 

 

这张图是个不错的,能启发一些市场需求的框架。

至于我们能在此基础上做点什么,还需要深入思考。

 

Continue...