重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
注:
江宁网站建设公司创新互联,江宁网站设计制作,有大型网站制作公司丰富经验。已为江宁近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的江宁做网站的公司定做!
网上有很多的方法,但是最终结果都有很大的差异,对于半径取值(地球赤道半径6378.137千米,极半径6356.752千米,平均半径约6371千米)根据自己需求进行定义;计算结果应与其他地图软件进行对比,保证数值正确;
回答的有点晚,正好我做到相关的项目了,希望能帮到其他人.
餐馆申请时候通过填写的地址取得经纬度存入数据库,下面是查询某个经纬度附近500米的
$user_lat='41.749034'; //传过来的纬度
$user_lng='123.46017';//传过来的经度
$store_mod=db("store"); //数据库
$storelist=$store_mod-query("SELECT
*,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((".$user_lat."*PI()/180-【store_latitude】*PI()/180)/2),2)+COS(".$user_lat."*PI()/180)*COS(【store_latitude】*PI()/180)*POW(SIN((".$user_lng."*PI()/180-【store_longitude】*PI()/180)/2),2)))*1000)
AS distance FROM store HAVING 【搜索条件如 state=1】 distance【周围距离多少米 如
500】 ORDER BY distance ASC");
var_dump($storelist);
【】sql语句中括号的store_latitude,store_longitude为你数据库存的商家经纬度的字段名,其余的为注释
mysql两点间距,你也自己弄成函数
公式如下,单位米:
第一点经纬度:lng1 lat1
第二点经纬度:lng2 lat2
round(6378.138*2*asin(sqrt(pow(sin(
(lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)*
pow(sin( (lng1*pi()/180-lng2*pi()/180)/2),2)))*1000)
例如:
SELECT store_id,lng,lat,
ROUND(6378.138*2*ASIN(SQRT(POW(SIN((22.299439*PI()/180-lat*PI()/180)/2),2)+COS(22.299439*PI()/180)*COS(lat*PI()/180)*POW(SIN((114.173881*PI()/180-lng*PI()/180)/2),2)))*1000)
AS
juli
FROM store_info
ORDER BY juli DESC
LIMIT 316
楼主 请再讲清楚点好吧?
GlangXMeter GlatYMeter, PxMeter PyMeter 各确定一个点 怎么个确定法?
不大明白
快下班了 才看到你的补充
来不及写语句了 思路说下吧 就像高中学的
点1(x1,y1) 点2(x2,y2)
两点距离:(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) 再平方根就可以了
数据库中应该有平方,平方根的函数
很简单的 只是用在数据库中了而已、