重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
给大家一条语句能执行的地方
成都创新互联是一家专业提供朝阳企业网站建设,专注与网站建设、成都网站制作、H5页面制作、小程序制作等业务。10年已为朝阳众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
SELECT id, ( 6371* acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance 25 ORDER BY id LIMIT 20 数据库中查找 距离 37,-122 距离 小于25公里的 经纬度
以前看GOOGLE 地图 API 开发时候的一篇文章里面有 给分 给分
DROP FUNCTION IF EXISTS func_calcDistance ;
CREATE FUNCTION func_calcDistance(
origLng DECIMAL(20,6), -- 目的地经度
origLat DECIMAL(20,6), -- 目的地纬度
longitude DECIMAL(20,6), -- 当前所在地点经度
latitude DECIMAL(20,6) -- 当前所在地点纬度
)
RETURNS DOUBLE
BEGIN
DECLARE result DOUBLE DEFAULT 0;
SET result = round(6378.138*2*asin(sqrt(pow(sin(
(origLat*pi()/180-latitude*pi()/180)/2),2)+cos(origLat*pi()/180)*cos(latitude*pi()/180)*
pow(sin( (origLng*pi()/180-longitude*pi()/180)/2),2)))*1000);
RETURN result;
END ;
注:
网上有很多的方法,但是最终结果都有很大的差异,对于半径取值(地球赤道半径6378.137千米,极半径6356.752千米,平均半径约6371千米)根据自己需求进行定义;计算结果应与其他地图软件进行对比,保证数值正确;
楼主 请再讲清楚点好吧?
GlangXMeter GlatYMeter, PxMeter PyMeter 各确定一个点 怎么个确定法?
不大明白
快下班了 才看到你的补充
来不及写语句了 思路说下吧 就像高中学的
点1(x1,y1) 点2(x2,y2)
两点距离:(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) 再平方根就可以了
数据库中应该有平方,平方根的函数
很简单的 只是用在数据库中了而已、