Mysql 之根据经纬度按距离排序】的更多相关文章

一.方式一 st_distance 计算的结果单位是度,需要乘111195(地球半径6371000*PI/180)是将值转化为米. SELECT *, (st_distance(point(lng,lat),point(116.3424590000,40.0497810000))*111195/1000 ) as juli FROM table ORDER BY juli ASC 二.方式二 select *, ROUND(6378.138*2*ASIN(SQRT(POW(SIN(({$lat}…
按照经纬度计算距离 日常开发中,特别是做微信项目时,经常会遇到根据用户地理位置来展示附近商家的功能,通常解决这种问题的思路是,后台设置商家的经纬度,然后再根据前台传的经纬度进行计算,具体经纬度转换以及前台如何获取,本篇不做详细介绍,可以使用php类方法计算,也可以通过sql语句来计算,在此,主要是介绍利用MySQL创建一个函数,然后在sql语句中使用 创建函数:lat_lng_distance(),单位:km,并已截取小数点2位 CREATE FUNCTION `lat_lng_distance…
CREATE TABLE `locationpoint` ( `id` int(11) NOT NULL, `province` varchar(20) NOT NULL, `city` varchar(20) NOT NULL, `longitude` double(10,3) NOT NULL, `latitude` double(10,3) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 INSERT IN…
es实体,用 @GeoPointField 注解,值为:中间逗号隔开,如 29.477000,119.278536(经度, 维度) @Document(indexName = "v_intelligent_store") @Data public class IntelligentStore implements Serializable { private String id; /** 体验店名称 */ private String name; /** 联系人姓名 */ privat…
Solr 空间搜索配置 1. 在solr目录下的找到conf文件夹下的schema.xml. <fields> <!-- 在fields元素中添加如下代码 --> <field name="store_lat_lon" type="location" indexed="true" stored="true"/> <dynamicField name="*_coordinate…
.Net MongoDB LBS地理位置定位 开发过程,实现商家按距离排序 前言: 在使用美团点外卖,看电影,找好吃的时候,经常会注意到软件有一个按距离排序,找离我最近的商家,心中有一些疑问,.Net+Sql Server是如何做到这一需求的?发现使用关系型数据库Sql Server实现这一需求是有些问题的,需要一系列经纬度数学公式的计算,效率就不高了.近期了解学习了下非关系型数据库MongoDB,发现MongoDB的地理位置索引,可以完美的解决这个问题     1. 本机部署安装MongoDB…
在做项目时,经常会遇到“离我最近”这种需求.顾名思义,它需要根据用户的经纬度和事物的经纬度计算距离,然后进行排序,最后分页(当然这些操作要在数据库中进行,否则就变成假分页了). 我们通常可以用sql语句来实现 SELECT es_name, es_lon, es_lat, ROUND( * ASIN( SQRT( POW( SIN( ( ) ), ) ) ) * POW( SIN( ( ) ), ) ) ) ) AS distance_um FROM c_ershuai ORDER BY dis…
<script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak='自己申请'&s=1"></script> <script type="text/javascript" charset="utf-8"> var geolocation = new BMap.Geolocation(); ge…
mysql如何用order by 自定义排序 id name roleId aaa bbb ccc ddd eee ,MySQL可以通过field()函数自定义排序,格式:field(value,str1,str2,str3,str4),value与str1.str2.str3.str4比较,返回1...,如遇到null或者不在列表中的数据则返回0. 例如:,,,,); 结果: id name roleId bbb ccc ddd aaa eee ,locate(substr,str)函数返回子…
mysql有两种方式可以生成有序的结果,通过排序操作或者按照索引顺序扫描,如果explain的type列的值为index,则说明mysql使用了索引扫描来做排序(不要和extra列的Using index搞混了,那个是使用了覆盖索引查询).扫描索引本身是很快的,因为只需要从一条索引记录移动到紧接着的下一条记录,但如果索引不能覆盖查询所需的全部列,那就不得不扫描一条索引记录就回表查询一次对应的整行,这基本上都是随机IO,因此按索引顺序读取数据的速度通常要比顺序地全表扫描慢,尤其是在IO密集型的工作…