这年头和LBS相关的应用越来越火。从foursquare的热闹程度就可见一般(什么,没听过 foursquare…. 哥们,你 out 了)。和 LBS有关的应用一般都包括一些共同的操作,最常见的一个,就是找附近的东东(餐馆, 商店, 妞…)。 所以, 这里就抛出了一个问题, 怎样才能知道两个物体离得近呢?

例如:用iPhone/android手机定位得到理想国际大厦的经纬度:39.98123848, 116.30683690 然后查找附近的妞根据一点的经纬度实现附近点的查询" title="在SAE上开发LBS应用之 根据一点的经纬度实现附近点的查询"> 

<?php

require_once('geohash.class.php');

$geohash = new Geohash;

//得到这点的hash值

$hash = $geohash->encode(39.98123848, 116.30683690);

//取前缀,前缀约长范围越小

$prefix = substr($hash, 0, 6);

//取出相邻八个区域

$neighbors = $geohash->neighbors($prefix);

array_push($neighbors, $prefix);

print_r($neighbors);

 

?>

 

得到9个geohash值:

 

Array

(

    [top] => wx4eqx

    [bottom] => wx4eqt

    [right] => wx4eqy

    [left] => wx4eqq

    [topleft] => wx4eqr

    [topright] => wx4eqz

    [bottomright] => wx4eqv

    [bottomleft] => wx4eqm

    [0] => wx4eqw

)

 

范围如图:

 

 

用sql语句查询:

SELECT * FROM xy WHERE geohash LIKE 'wx4eqw%';

SELECT * FROM xy WHERE geohash LIKE 'wx4eqx%';

SELECT * FROM xy WHERE geohash LIKE 'wx4eqt%';

SELECT * FROM xy WHERE geohash LIKE 'wx4eqy%';

SELECT * FROM xy WHERE geohash LIKE 'wx4eqq%';

SELECT * FROM xy WHERE geohash LIKE 'wx4eqr%';

SELECT * FROM xy WHERE geohash LIKE 'wx4eqz%';

SELECT * FROM xy WHERE geohash LIKE 'wx4eqv%';

SELECT * FROM xy WHERE geohash LIKE 'wx4eqm%';

看一下是否用上索引(一共有50多万行测试数据):

根据一点的经纬度实现附近点的查询">

geohash.class.php下载地址:https://github.com/CloudSide/geohash

资料:

·      geohash演示:  http://openlocation.org/geohash/geohash-js/

·      wiki: http://en.wikipedia.org/wiki/Geohash

·      原理: http://blog.sina.com.cn/s/blog_62ba0fdd0100tr98.html

LBS应用之 根据一点的经纬度实现附近点的查询的更多相关文章

  1. PHP jpgraph的一点小提示(附安装方法)

    PHP中的GD库本身是一套很强大的绘图库了,绘制的图像基本可以满足日常要求,但强大规强大,还是不够方便哈,因为强大方便的基于PHP的GD库的jpgraph也就诞生啦! PHP默认是不启用GD库的,因为 ...

  2. geohash编码算法在LBS中的应用

    随着移动终端的普及,很多应用都基于LBS功能,附近的某某(餐馆.银行.妹纸等等). 基础数据中,一般保存了目标位置的经纬度:利用用户提供的经纬度,进行对比,从而获得是否在附近. 目标: 查找附近的某某 ...

  3. 跟据经纬度实现附近搜索Java实现

    现在很多手机软件都用附近搜索功能,但具体是怎么实现的呢>在网上查了很多资料,mysql空间数据库.矩形算法.geohash我都用过了,当数据上了百万之后mysql空间数据库方法是最强最精确的(查 ...

  4. 通过百度地图API--获取全国地图的经纬度

    因为要做一个前端画图需要经纬度,一个个的查询过麻烦,最终弄出这个,以备后查! import threading , time import requests from decimal import D ...

  5. javascript百度地图使用(根据地名定位、根据经纬度定位)

    需要购买阿里云产品和服务的,点击此链接领取优惠券红包,优惠购买哦,领取后一个月内有效: https://promotion.aliyun.com/ntms/yunparter/invite.html? ...

  6. Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)

    在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便.定位一般分为三种发方案:即GPS定位.Google网络定位以及基站定位 最简单的手机定位方式当然是通过GP ...

  7. WebGIS中GeoHash编码的研究和扩展

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 1.1普通地理编码流程 将采集的POI入库后,数据库里保存有 ...

  8. PROJ4初探(转并整理格式)

    PROJ4初探(转并整理格式) Proj4是一个免费的GIS工具,软件还称不上. 它专注于地图投影的表达,以及转换.采用一种非常简单明了的投影表达--PROJ4,比其它的投影定义简单,但很明显.很容易 ...

  9. [资料]mysql实现地理位置搜索

    mysql实现地理位置搜索 使用mysql来实现lbs(地理位置服务)功能 Mysql 地区经纬度 查询

随机推荐

  1. Log4j2进阶使用(更多高级特性)

    1.高级进阶说明 本文介绍Log4j2高级进阶使用, 基于Log4j2进阶使用(按大小时间备份日志), 介绍更多的高级特性, 本文基于上文给出的完整log4j2.xml, 修改对应的配置项, 演示高级 ...

  2. Laravel Redis分布式锁的使用

    创建锁 use Illuminate\Support\Facades\Cache; $lock = Cache::lock('foo', 10); if ($lock->get()) { // ...

  3. 合并区间(c++)

    L. 合并区间 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 给出n个闭区间,把其中有重叠的区间合并为一个区间. 例如,给出4个区间, ...

  4. SpringBoot集成jasperreport实现打印功能

    1.jaspersoft studio工具下载地址 下载直通车 2.工具使用方法查看以下链接 工具使用 3.将工具编译后的.jasper文件放到SpringBoot项目的resources/templ ...

  5. python 之 pip、pypdf2 安装与卸载

    pip是个啥? pip 是一个现代的,通用的 Python 包管理工具.提供了对 Python 包的查找.下载.安装.卸载的功能. 第一步:pip 下载:https://pypi.org/projec ...

  6. mybatis-plus实现多表联查

    一.方法一 1.在pojo模块下新建一个VO 包路径用于提供页面展示所需的数据 2.在vo包下新建EmployInfo类,此类继承了Employees类,再把Dept类的数据复制过来 3.在Dao层中 ...

  7. C语言字幕从外向中间汇聚

    演示数据中多个字符,从两端向中间移动,向中间汇聚 简单,粗暴,先上代码: Sleep()函数属于<windows.h>头文件中. sizeof()函数求右下标:数组内是数字时,求右下标要- ...

  8. dubbo系列一、dubbo启动流程

    目录 dubbo启动流程分析记录 一.dubbo provider启动流程 1.自动装配 2.ServiceBean处理 3.服务暴露export() 3.1.检测dubbo.xxx.配置属性,配置到 ...

  9. golang中的配置管理库viper

    viper简介 Viper是适用于Go应用程序的完整配置解决方案.它旨在在应用程序中工作,并且可以处理所有类型的配置需求和格式.它支持: 设置默认值 从JSON,TOML,YAML,HCL,envfi ...

  10. Ansible + shell 实现部署fastdfs+nginx 实现图片服务器并提供动态缩放功能;

    因为公司阿里服务器变动几次,手动部署了好几次fastdfs+nginx,于是就想到了自动化部署,以下为脚本内容,由于只是想把着功能实现,并未有完完整的判断逻辑: 以下为ansible-playbook ...