经纬度

sql 经纬度范围检索(谷歌方案)

拈花ヽ惹草 提交于 2019-11-29 07:30:31
SELECT id, ( 6371 * acos ( cos ( radians(78.3232) ) * cos( radians( 数据库纬度字段) ) * cos( radians( 数据库经度字段) - radians(65.3234) ) + sin ( radians(78.3232) ) * sin( radians( latitude ) ) ) ) AS distance , name FROM tb_hotel HAVING distance < 0.4 ORDER BY distance LIMIT 0 , 20; 该SQL语句将找到距离纬度:78.3232、经度:65.3234坐标0.4公里里范围内最近的20个位置。它根据该行的经纬度和目标经纬度计算距离,然后只要求距离值小于30公里的行,按距离对整个查询排序,并将其限制为20个结果。 转自: https://www.iteye.com/blog/justcoding-2224906 上面有更多的计算方式 来源: https://www.cnblogs.com/Zhusi/p/11470670.html

经纬度转换

可紊 提交于 2019-11-29 03:30:44
public class GCJ2WGSUtils { // 输入GCJ经纬度 转WGS纬度 public static double WGSLat(double lat, double lon) { double PI = 3.14159265358979324;// 圆周率 double a = 6378245.0;// 克拉索夫斯基椭球参数长半轴a double ee = 0.00669342162296594323;// 克拉索夫斯基椭球参数第一偏心率平方 double dLat = transformLat(lon - 105.0, lat - 35.0); double radLat = lat / 180.0 * PI; double magic = Math.sin(radLat); magic = 1 - ee * magic * magic; double sqrtMagic = Math.sqrt(magic); dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI); return (lat - dLat); } // 输入GCJ经纬度 转WGS经度 public static double WGSLon(double lat, double lon) { double PI =

在数据库获取某经纬度周边的商铺

a 夏天 提交于 2019-11-28 18:48:04
$slat = $banner_content['jd']; $slng = $banner_content['wd']; $sql = "select *, ROUND(6378.138*2*ASIN(SQRT(POW(SIN(($slat*PI()/180-jd*PI()/180)/2),2)+COS($slat*PI()/180)*COS(jd*PI()/180)*POW(SIN(($slng*PI()/180-wd*PI()/180)/2),2))),5) AS juli FROM {$this->model->pre}post where status=1 HAVING juli <= 2"; $list = $this->model->query($sql); $this->assign('list', $list); 来源: https://www.cnblogs.com/wmc1125/p/11421166.html

浏览器获取手机经纬度位置

主宰稳场 提交于 2019-11-28 18:34:44
function getAddr() { window.navigator.geolocation.getCurrentPosition( function (position) { var longitude = position.coords.longitude; var latitude = position.coords.latitude; alert(longitude); alert(latitude); }, function onError(error) { //alert(error.message); switch (error.code) { case error.PERMISSION_DENIED: alert("您拒绝对获取地理位置的请求"); break; case error.POSITION_UNAVAILABLE: alert("位置信息是不可用的"); break; case error.TIMEOUT: alert("请求您的地理位置超时"); break; case error.UNKNOWN_ERROR: alert("未知错误"); break; } } ); }; 经纬度位置无法获取的情况: 1. 网址必须为域名,不能用ip直接访问,否则手机浏览器直接拒绝改请求。 2. iphone的浏览器(包括微信扫码进入网站) ,亲测调用 http

获取固定经纬度固定范围的经纬度值

与世无争的帅哥 提交于 2019-11-28 15:45:37
计算查询点的经纬度范围1.1 地球半径千米 double r = 6371; 1.2 默认直线距离 1千米距离 double dis = 1; 1.3 角度计算公式double = 2*Math.asin(Math.sin(dis/(2*r))/Math.cos(latitude*Math.PI/180)); 1.4 角度转为弧度 double dlng = angle*180/Math.PI; double dlat = dis/r;dlat = dlat*180/Math.PI; 1.5 范围内最大最小经纬度计算 double minlat =latitude-dlat;double maxlat = latitude+dlat;double minlng = longitude -dlng;double maxlng = longitude + dlng; double dis = 1;//默认直线距离 1千米距离 double r = 6371;//地球半径千米 double angle= 2*Math.asin(Math.sin(dis/(2*r))/Math.cos(latitude*Math.PI/180)); double dlng = angle*180/Math.PI;//角度转为弧度 double dlat = dis/r; dlat = dlat*180

Net微信网页开发之使用微信JS-SDK获取当前地理位置

混江龙づ霸主 提交于 2019-11-28 15:22:05
前言:   前段时间有一个关于通过获取用户当前经纬度坐标,计算出该用户距离某指定地点之间的距离。因为做这个项目需要能够获取到比较精确的经纬度坐标,刚开始使用的是百度地图结果发现百度地图地位不太准确(有时候相差的比较的大,后来了解到了百度获取用户经纬度与用户当前使用的网络有很大的关系),后来换成了高德地图结果还是一样。最后我想刚好做的是个微信网站项目,为什么不使用微信自带接口呢?所以最后使用了微信JS-SDK来获取用户当前地理位置的接口。 微信JS-SDK的使用步骤,配置信息的生成获取讲解:   关于JS-SDK的使用步骤和timestamp(时间戳),nonceStr(随机串),signature(签名),access_token(接口调用凭据)生成获取的详细说明在此: https://www.cnblogs.com/Can-daydayup/p/11124092.html 前往微信公众平台查看是否开通获取用户地理位置接口权限: 调用微信JS-SDK获取地理位置接口,获取用户当前准确经纬度坐标: 微信官方文档使用说明: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#35 <script type="text/javascript"> //通过config接口注入权限验证配置 wx

计算两个经纬度点间的距离

我怕爱的太早我们不能终老 提交于 2019-11-28 02:40:01
计算两个经纬度点间的距离 纬度线投射在图上看似水平的平行线,但实际上是不同半径的圆。有相同特定纬度的所有位置都在同一个纬线上。 赤道的纬度为0°,将行星平分为南半球和北半球。 纬度是指某点与地球球心的连线和地球赤道面所成的线面角,其数值在0至90度之间。位于赤道以北的点的纬度叫北纬,记为N,位于赤道以南的点的纬度称南纬,记为S。 纬度数值在0至30度之间的地区称为低纬地区,纬度数值在30至60度之间的地区称为中纬地区,纬度数值在60至90度之间的地区称为高纬地区。 赤道、南回归线、北回归线、南极圈和北极圈是特殊的纬线。 纬度1秒的长度 地球的子午线总长度大约40008km。平均: 纬度1度 = 大约111km 纬度1分 = 大约1.85km 纬度1秒 = 大约30.9m The haversine formula 在球上任意两个点的距离有如下关系: 其中,d:两点间距离,既球面距离; r:球的半径; :点1和点2的纬度; :点1和点2的经度; Java版: 1 import com.google.android.maps.GeoPoint; 2 3 public class DistanceCalculator { 4 5 private double Radius; 6 7 // R = earth's radius (mean radius = 6,371km) 8 //

Geohash精度和原理

落爺英雄遲暮 提交于 2019-11-27 22:25:36
转自: https://blog.csdn.net/u011497262/article/details/81210634     https://www.jianshu.com/p/1ecf03293b9a geohash基本原理是将地球理解为一个二维平面,将平面递归分解成更小的子块,每个子块在一定经纬度范围内拥有相同的编码,这种方式简单粗暴,可以满足对小规模的数据进行经纬度的检索 目录: 经纬度常识 认识geohash geohash算法 geohash原理 对照表 经纬度常识 经线是纵的,经度是横的,用于表示不同的经线,纬线是横的,纬度是纵的,用于表示不同的纬线,如下图 纬线:地球仪上的横线,lat,赤道是最大的纬线,从赤道开始分为北纬和南纬,都是0-90°,纬线是角度数值,并不是米; 经线:地球仪上的竖线,lng,子午线为0°,分为西经和东经,都是0-180°,经线也是角度数值; 经纬线和米的换算:经度或者纬度0.00001度,约等于1米,这个在GPS测算距离的时候可以体会到,GPS只要精确到小数点后五位,就是10米范围内的精度 经度0度的位置为本初子午线,在180度的位置转为西经,数字由大到小依次经过北美洲到达西欧.纬度0度的位置为赤道 为了便于理解,将地球看成一个基于经纬度线的坐标系。纬线就是平行于赤道平面的那些平面的周线,经线就是连接南北两极的大圆线的半圆弧

Android OpenGLES2.0(六)——构建圆锥、圆柱和球体

ⅰ亾dé卋堺 提交于 2019-11-27 15:46:54
之前的博客中,我们绘制了三角形、正方形、圆形、立方体,今天我们将绘制圆锥、圆柱和球体。能够绘制这些基本的常规几何形体后,其他的常见几何形体的绘制对于我们来说就基本没问题了。 绘制圆锥 由之前的博客,我们大家也应该都知道了,OpenGL ES2.0中物体的绘制重点就是在于把这个物体表面分解成三角形,分解成功后,绘制自然就不成问题了。圆锥我们很容易就能想到把它拆解成一个圆形和一个锥面,锥面的顶点与圆形的顶点,除了锥面的中心点的坐标有了“高度”,其他的完全相同。圆形在Android OpenGLES2.0(四)——正方形和圆形中我们已经绘制过,那么锥面其实对于我们来说也是小case了: ArrayList<Float> pos=new ArrayList<>(); pos.add(0.0f); pos.add(0.0f); pos.add(height); //给圆心相对圆边增加高度,使之形成锥面 float angDegSpan=360f/n; for(float i=0;i<360+angDegSpan;i+=angDegSpan){ pos.add((float) (radius*Math.sin(i*Math.PI/180f))); pos.add((float)(radius*Math.cos(i*Math.PI/180f))); pos.add(0.0f); } float[