PHP版根据经纬度和半径计算出经纬度的范围
百度地图提供了范围搜索的功能,但是它使用的是百度自己的数据,但是有时候我们需要使用自己的数据,显示在地图上。比如给定两个参数:指定位置(某一处的经纬度lnglat)和搜索半径(r),搜索指定范围内的数据。针对这样的需求,基本有三种方法可以解决:
1:根据map提供的计算两个坐标之间距离的方法,逐一计算指定位置和我们DB库中的位置的距离s,用s和r进行比较,如果s<r,则在搜索范围内,返给前段标注在地图上。这种方法如果数据量小,可以尝试,如果数据量大,没测试过,但可以想象……
2:使用搜索引擎自带的功能,比如solr的位置感知搜索,可参看文章http://www.ibm.com/developerworks/cn/java/j-spatial/
3:如果对精度要求不是很高,可以根据指定位置的经纬度和半径计算出经纬度的范围,然后判断DB中的经纬度是否在此范围内,可用SQL进行查询。下面是此计算方法:
/**
* @param lat 纬度 lon 经度 raidus 单位米
* return minLat,minLng,maxLat,maxLng
*/ public function getAround($lat,$lon,$raidus){
$PI = 3.14159265; $latitude = $lat;
$longitude = $lon; $degree = (24901*1609)/360.0;
$raidusMile = $raidus; $dpmLat = 1/$degree;
$radiusLat = $dpmLat*$raidusMile;
$minLat = $latitude – $radiusLat;
$maxLat = $latitude + $radiusLat; $mpdLng = $degree*cos($latitude * ($PI/180));
$dpmLng = 1 / $mpdLng;
$radiusLng = $dpmLng*$raidusMile;
$minLng = $longitude – $radiusLng;
$maxLng = $longitude + $radiusLng;
echo $minLat.”#”.$maxLat.”@”.$minLng.”#”.$maxLng;
}
本文固定链接: http://www.ccsbbs.com.cn/archives/4686.html
PHP版根据经纬度和半径计算出经纬度的范围的更多相关文章
- iOS 根据圆心的坐标点、半径、当前手势所在的坐标点,计算出圆的运动轨迹坐标
/** * 根据圆心的坐标点.半径.当前手势所在的坐标点,计算出圆的运动轨迹坐标 * @param radius 圆心半径 * @param centerCircle 圆心的坐标点 * @param ...
- mysql 下 计算 两点 经纬度 之间的距离(转)
公式如下,单位米: 第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2* ...
- mysql 下 计算 两点 经纬度 之间的距离
公式如下,单位米: 第一点经纬度:lng1 lat1 第二点经纬度:lng2 lat2 round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2* ...
- mysql 下 计算 两点 经纬度 之间的距离 计算结果排序
根据经纬度计算距离公式 公式 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 -Lung ...
- 根据地图上的两个点各自的x,y坐标,计算出2点之间的直线距离。显示为公里、米
/** * calc_map_distance() , 根据地图上的两个点各自的x,y坐标,计算出2点之间的直线距离 * @param array $point_1 第1个点的x,y坐标 array( ...
- Excel中利用IF和TIME函数计算出上下班状态!
大家都知道现在上下班实行打卡制,制作考勤的人员需要对你上下班的时间,计算出上下班的状态,比如:迟到.早退.加班.正常等.下面为您介绍一个“帮手”. 1.打开Excel文档.如下图 ...
- PHP 计算出内存最高占用.
PHP 计算出内存最高占用. 代码可以计算出内存是否完全被使用, ini设置处:memory_limit = 1024M 代码跑完将显示如下信息: memory_limit:320M all ...
- 【c实现,vc6调试通过】给出一字符串指针,计算出字符串指针中单词数
#include <stdio.h> /* 给出一字符串指针,计算出字符串指针中单词数, 单词不包括'.',',',';','?','_','"',由0-9数字或26个字母组成 ...
- 【Python学习】指定两点地理位置经纬度的距离计算
指定两点地理位置经纬度的距离计算 #coding=utf-8 from math import * # input Lat_A 纬度A # input Lng_A 经度A # input Lat_B ...
随机推荐
- CodeForces 622 A.Infinite Sequence
A.Infinite Sequence time limit per test 1 second memory limit per test 256 megabytes input standard ...
- URAL-1998 The old Padawan 二分
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1998 题意:有n个石头,每个石头有个重量,每个时间点你能让一个石头飞起来,但有m个时间点 ...
- GLSL Notes
[GLSL Notes] API of shader: glCreateShader(), glShaderSource(), glCompileShader(), glGetShadrInfoLog ...
- 应用dom4j读取xml的例子
1. 样例xml <?xml version="1.0" encoding="UTF-8"?> <students> <stude ...
- Java反射机制(创建Class对象的三种方式)
1:了解什么是反射机制? 在通常情况下,如果有一个类,可以通过类创建对象:但是反射就是要求通过一个对象找到一个类的名称: 2:在反射操作中,握住一个核心概念: 一切操作都将使用Object完成,类 ...
- java复制File文件操作
==========================复制File操作========================= /** * * @param newPath要赋值的路径 * @para ...
- 配置IIS服务器,.apk文件下载
iis中支持下载apk文件, 发布的网站上右键->属性->HTTP头->下方有个按钮叫[MIME类型]->添加:两个栏, 扩展名填写: .apk MIME类型填写: 扩展名为 ...
- redis的文件事件处理器
前言 C10K problem提出了一个问题,如果1w个客户端连接到server上,间歇性的发送消息,有哪些好的方案? 其中的一种方案是,每个线程处理多个客户端,使用异步I/O和就绪通 ...
- 解决WebService 中泛型接口不能序列化问题
本来要定义WebServices 方法返回一泛型接口集合IList,系统提示不能序列化泛型接口集合 1 [WebMethod] 2 public IList<Employ ...
- (剑指Offer)面试题27:二叉搜索树与双向链表
题目: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 二叉树的定义如下: struct TreeNode{ int val; Tr ...