随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理。
关于LBS的详细介绍及通用的几个解决方案,可以参考:深入浅出Symfony2 - 结合MongoDB开发LBS应用
本文主要举例说明使用Perl语言 + MongoDB实现查找附近的人的实现方案。
涉及的官方API说明文档列表:
实现步骤如下:
1、建立数据库表geoperson,包含位置信息字段:loc (按照GeoJSON格式组织), 数据如下:
{
"_id": "o15041420964119780063",
"name": "stephen",
"head_fid": "f15022500199301140308001",
"loc": {
"type": "Point",
"coordinates": [
119.29647,
26.07421
]
},
"type": "geoperson",
"province": "福建省"
}
2、建立2dsphere索引
my $mocl = mdb()->get_collection("geoperson")->ensure_index({loc=>"2dsphere"});
3、查找附近2.5公里的人
my $rad = 2500; # 查找范围 2.5公里
my $max_size = 20; # 最多返回20条匹配数据
my $longitude = 119.31647; # 中心点坐标(经纬度)
my $latitude = 26.17421;
my $mocl = mdb()->get_collection("geoperson")->aggregate([
{
'$geoNear'=>{
'near'=> { type=>"Point", coordinates=>[$longitude, $latitude] }, # 也要采取GeoJSON格式
#'num'=> $max_size,#The default value is 100
'spherical'=>1, #Required if using a 2dsphere index.
# Specify the distance in meters if the specified point is GeoJSON
'maxDistance'=>$rad, # 单位是米
# The output field that contains the calculated distance.
'distanceField'=>"distance",
}
},
{ '$match'=> { "name"=> "lily" } } # 进一步过滤条件
{ '$sort'=> { "ut"=> -1 } } # 排序
]);
MongoDB原生支持地理位置索引,且高性能、支持复杂查询。
是不是很简单呀。
相关推荐
### LBS应用开发(Location-Aware Applications)核心知识点详解 #### 一、LBS概述与大图景 **1.1 LBS(Location-Based Services)基本概念** - **定义**: LBS指的是利用移动通信网络和地理位置信息提供的各类服务。...
### MongoDB在北京2014大会中的应用案例——快的打车 #### 一、快的打车业务背景 快的打车成立于2012年5月,同年8月正式上线运营,短短两年多时间迅速崛起,成为中国领先的移动出行平台之一。至2014年9月,快的...
本文将深入探讨MongoDB在开发设计和运维管理中的具体应用,以及它如何适应视频业务的需求。 首先,咪咕视讯作为一家涵盖大屏、VR屏和小屏的多媒体娱乐公司,其产品矩阵包括咪视通、移动云VR和咪咕视频,拥有海量的...
然而,Native App通常在性能、离线操作和访问设备硬件方面更具优势,对于需要高度优化用户体验和复杂交互的LBS应用,开发者可能需要权衡选择。 最后,HTML5 Web App的开发架构通常包括前端、后端和数据交互三个部分...
综上所述,基于Android平台与LBS地理位置服务的移动社交应用系统开发涉及的知识点广泛而深入,涵盖Android应用开发基础、地理位置服务、社交网络架构、服务器开发、数据安全和用户体验等多个方面。开发者需要不断...
【标题】"LBS^2 魔兽" 指的可能是一个基于地理位置服务(Location-Based Services,简称LBS)的魔兽世界相关项目或应用。在这个上下文中,"LBS"通常指的是利用移动设备(如手机)的定位功能来提供与用户当前位置相关...
在业务初期,系统可能采用MongoDB作为LBS服务,因为它具备开发部署简单、原生支持空间索引、实时更新支持良好等优点,但随着业务规模的扩大,MongoDB的库级锁问题和查询性能下降成为明显的瓶颈。 MongoDB在处理大量...
综上所述,foursquare源码的分析不仅能让我们了解LBS应用的基本架构,还能深入学习到社交网络的设计、推荐系统的工作原理、大数据处理以及前端优化等多个领域的技术知识。对于任何想要提升自己在移动应用开发领域...
综上所述,基于LBS的O2O电子商务网站源码是一个复杂而精细的系统工程,涵盖了LBS技术、O2O模式、Web开发、数据库设计等多个领域。理解并掌握这部分源码,对于开发者来说,不仅能提升技术能力,也能更好地理解和运用...
【Android应用源码——基于LBS的社交软件包括服务端】是一个典型的移动开发项目,它展示了如何构建一个基于位置服务(LBS,Location-Based Services)的社交应用。在这个项目中,我们有两个主要部分:`monolog-web-...
【描述】提到"LBS^2 windows live"可能是指一个基于Windows Live平台的LBS应用或服务。这个项目可能旨在为用户提供基于地理位置的个性化信息,比如天气预报、周边商家信息、导航服务等。结合Windows Live的特性,它...
【标题】"LBS^2 childhood" 暗示了一个可能与地理位置服务(Location-Based Services)和儿童相关的项目或应用。在IT行业中,LBS通常指的是利用移动设备、无线网络和GPS等技术来获取用户的位置信息,并根据这些信息...
通过研究这个项目源码,开发者不仅能学习到Android应用开发的基本技巧,还能深入了解LBS服务的实现方式以及如何构建一个完整的社交应用。这对于提升个人技能、理解移动社交系统的工作原理以及进行类似项目开发具有...
为了解决上述问题,街旁网开发了CrabDB,这是一种专为LBS应用设计的数据库系统。CrabDB采用简单的key->list数据结构,每个地点(loc_id)对应一个用户签到列表,实现了定长存储,以减少空间开销。CrabDB支持多种查询...
通过以上分析,我们可以推测"LBS^2 随手日记"是一个结合了地理位置服务和日记记录功能的网页应用,涵盖了前端、后端、数据库、地图集成等多个技术领域,为用户提供了一个富有创新和实用性的在线日记平台。
【标题】"LBS^2 一天到晚游泳的鱼" 暗示了一个与位置服务(Location-Based Services,简称LBS)相关的项目,可能是一个互动应用或者游戏,其主题可能与水生生物或者游泳有关。这个标题可能是项目的名字或者一个特定...
LBS是现代移动应用中的关键组成部分,它利用GPS、Wi-Fi、蓝牙或移动网络等技术获取用户的位置信息,从而提供与用户当前位置相关的服务。在智能旅游导游系统中,LBS技术用于实时定位游客,并根据他们的位置推荐附近的...
【lbs-sign:基于LBS的签到工具】 lbs-sign是一个集成服务器服务和Android客户端的签到系统,利用了Location-Based Services(LBS,基于...对于学习LBS应用开发或构建类似系统的开发者来说,这是一个宝贵的参考资料。
这涉及到对APP后台功能的理解、架构设计的流程、通信机制的选择、服务器和开发语言的选取,以及敏捷开发方法的应用。 1. **App后台功能**: - **远程存储数据**:APP需要一个后台来存储用户信息、应用数据等,确保...
不过,我们可以假设这款应用可能包含以下特性:定位服务(Location-Based Services,LBS)、本地搜索、用户评价系统、预约功能、服务分类等。 压缩包内的文件名“mechanicfinder-master”暗示这是一个软件项目,很...