查找附近的人。

这次和于大山写了个查找附近的人,功能是使用同一软件的人可以将地理位置信息上传到服务器,其他人可通过查找的功能将指定距离内的人的相关信息(包括地理位置信息)查找出来。

其实没什么技术含量,整个工程中最核心的地方就是用到了百度地图提供的lbs接口,通过这个接口访问百度地图提供的数据库,可以实现对表的增删改查等命令,也可以精确的计算gps之间的距离。

工程分为服务器与客户端,客户端可以上传GPS信息,服务器可以通过上传的信息对数据库的GPS进行更新与添加,客户端可以通过发送GPS定位信息让服务器返回附近的人。

因为功能太少,所以就没写图形界面,效果如下:

服务器是用的socket,消息采用的是对象流传输,一共定义了三个消息,更新/添加GPS坐标(MsgSet)、查找附近的人(MsgFind)、服务器返回附近的人的数据(MsgFindRes),还有一个存储信息的People类;

相关代码:

发送get与post请求的HttpTools类:

 HttpTools

用于调试的日志类

 MLog

服务器线程类

 ServerThread

服务器类

 Server

客户端类

 Client

消息类与一些常量就不贴了。

因为调用百度地图接口的时候需要收到json数据,所以还使用了org.json包。

没什么具体约定的规范,在编写的时候想起来缺少什么就现往里添加,及时补充。

从下午1点做到4点多钟。

心得与体会:

很多东西 可以直接利用现成的接口,因为自己写的并不一定比那些已经被验证了无数次的代码效果要好。很多事情还得现从实际生活中挖掘,加上之前已经有过类似的网络编程经验,所以做起来还算是得心应手。

时间: 2024-11-05 09:44:46

查找附近的人。的相关文章

使用elasticsearch1.5.2实现查找附近的人

pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <m

查找附近的人-1

<?php  require_once('geohash.class.php'); $geo=new Geohash; $gps=array(); for($i=0;$i<=100;$i++){  $g=array((rand(1000000,1001000)/100000),(rand(2000000,2001000)/100000));     $gps[]=$g; } foreach ($gps as $k => $v) {  echo $encode=$geo->encod

PHP之路——geohash查找附近的人

<?php class location { public function getLat($number, $small, $big, $temp = 20){ $temp--; $average = ($big + $small) / 2; if ($temp == 0) { if ($average <= $number) { return '1'; } else { return '0'; } } if ($average <= $number) { return '1' . $

人活着的意义2014.12.09

前段时间在百度里查找了一下....人活着的意义. 很多人都一样的困惑,其实80%的人都不喜欢上班,.上班只是为了生计!20%的人上班为了人生的目标! 80%的人都很奋斗!仅有20%的人奋斗的同时为自己的人生目标确定方向(即努力的动力)! 我挺欣赏毕淑敏的这句话:"人生本没有意义,每个人必须为自己的人生确定意义." 即为人生确定奋斗的目标和意义! 毕淑敏一个医学界有突出贡献的人都会考虑人活着的意义,何况我们这些平凡的不能再平凡的人!所以,你遇到的问题,其实大家都遇到!只是80%觉得就这么

在家谱中查找关系远近

[问题描述] 同姓氏中国人见面常说的一句话是"我们五百年前可能是一家".从当前目录下的文件in.txt中读入一家谱,从标准输入读入两个人的名字(两人的名字肯定会在家谱中出现),编程查找判断这两个人相差几辈,若同辈,还要查找两个人共同的最近祖先以及与他(她)们的关系远近.假设输入的家谱中每人最多有两个孩子,例如下图是根据输入形成的一个简单家谱: 通过该家谱,可以看到wangliang.wangguoping和wangguoan都有两个孩子,wangtian.wangxiang和wangs

二分查找,查指定值、小于k的最大值,大于k的最大值

我们经常会用到二分查找 二分查找应该很多人都会写了,今天要写一个用二分查找找到小于k的最大值的时候看了很久不懂他设计的思路,后来想通了,记录一下. 所以这篇主要是讲 用二分查找找到小于k的最大值和大于k的最大值. 二分查找查找指定值 这个挺简单的,直接上代码吧 //获取值是k的位置,找不到则返回-1 public static int getK(int[] a, int k){ if(a.length == 0){ return -1; } int l = 0; int r = a.length

Redis 到底是怎么实现“附近的人”这个功能的呢?

作者简介 万汨,饿了么资深开发工程师.iOS,Go,Java均有涉猎.目前主攻大数据开发.喜欢骑行.爬山. 前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG.MySQL和MongoDB等多种DB的空间索引进行实现.而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率.本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度. 要提供完整的“附近的人”服务,最基本的是要实现“增”.“删”.“查”的功能.以下将分别进行介绍,

Redis 到底是如何实现“附近的人”这个功能呢?

针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG.MySQL和MongoDB等多种DB的空间索引进行实现.而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率.本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度. 操作命令 自Redis 3.2开始,Redis基于geohash和有序集合提供了地理位置相关功能. Redis Geo模块包含了以下6个命令: GEOADD: 将给定的位置对象(纬度.经度.名字)添加到指定的k

ObjectC----实现简单的通讯录(增删改查)

// Created By 郭仔 2015年04月09日21:27:50 经过两天的低迷,状态在慢慢的回归了,生活还要继续,人生还需奋斗! 祝:好人一生平安!!! ======================================================================== 题目描述: 1.创建AddressBook类. 1)使?用字典作为容器,字典的Key值为分组名(姓名?首字?母,?大写),value值为数组,数组 中存放联系?人(Person实例).(5分