Python实现基于位置用户显示需求的方法是什么,python需求,需求描述:使用 djan
Python实现基于位置用户显示需求的方法是什么,python需求,需求描述:使用 djan
需求描述:使用 django 1.4 ,实现一个基本的基于位置的用户显示举例:用户 A 登录后,系统将显示 “以用户 A 为中心,方圆 X 公里内的所有用户”基本要求1. 用户的经纬度坐标可以由 admin 界面直接输入2. 方圆 X 公里,需要在 settings 里面设置3. 用户按由近至远的顺序显示,采用列表方式限制:1. 地图 api 只能作为显示使用,计算距离时不能使用;
我不太明白这个需求是什么意思?我的理解是在后台输入用户的id、坐标等信息,计算A与各用户的距离,然后在浏览器输出地图和排序后的用户。
PS:这是一道面试题,一看题目感觉有点难的样子,没看懂需求。
bla,bla,
我猜你需要一个ElasticSearch或者Solr之类的支持空间搜索的搜索引擎。
正好之前做过,给你个代码和文档,记得给我点赞。
https://github.com/phodal/django-elasticsearch
https://github.com/phodal/ionic-elasticsearch
如果是面试题,那应该提出多个解决方案吧
1.基于原生数据库的解决方案,即SQL中使用大量的函数来进行计算。缺点是:费力不讨好
sqlSELECT test. * , 2 * 6378.137 * ASIN( SQRT( POW( SIN( PI( ) * ( 31.229639 - lat ) /360 ) , 2 ) + COS( PI( ) * 31.229639 /180 ) * COS( lat * PI( ) /180 ) * POW( SIN( PI( ) * ( 121.455384 - lon ) /360 ) , 2 ) ) ) *1000 AS DISTANCEFROM `test` WHERE lat > 31.229639 -1 AND lat < 31.229639 +1 AND lon > 121.455384 -1 AND lon < 121.455384 +1 HAVING distance <400 ORDER BY distance DESC --- 建表SQLCREATE TABLE IF NOT EXISTS `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(45) NOT NULL, `lat` double NOT NULL, `lon` double NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
2.基于Geohash的折中解决方案(https://github.com/cevin/geohash),缺点是:无法精准掌握距离范围
3.基于ElasticSearch MongoDB Solr Sphinx等第三方应用软件的搜索、存储解决方案。+10086
编橙之家文章,
相关内容
- pyquery大小写效果不理想,有更好的吗,pyquery大小写,感觉
- 怎么获取Python3模块路径列表的疑惑,获取python3模块路
- Python上传文件到七牛后文件名如何保存,python牛后,im
- Django语音文件在线播放功能调试方式是什么?,django在线
- 请问要在阿里ACE部署django应用应该如何做?,阿里djang
- Python flask博客程序,response与json哪种好,flaskjson,关于手
- 聊聊框架中ORM与FORM存在的必要性,ormform,flask/django
- type()方法不是python最好的判断变量类型方法吗?,typep
- Python 捉虫unicode及utf-8转中文问题求解,pythonunicode,我爬
- 求助关于python装饰器返回值语法问题,python返回值,为什
评论关闭