无简介
数据库查询语句:
SELECT
id,
NAME,
province_id,
city_id,
area_id,
address,
SERVER,
average,
lng,
lat,round((2 * SIN(SQRT(POW(SIN((lat1* pi() / 180.0-lat2* pi() / 180.0)/2),2) +COS(lat1* pi() / 180.0)*COS(lat2* pi() / 180.0)*POW(SIN((lng1 * pi() / 180.0-lng2 * pi() / 180.0)/2),2))))*6378.137* 10000)/10000 AS dist
FROM
`ser_shop`
WHERE
service_type LIKE “%1%”
HAVING
dist < 2000
ORDER BY
dist ASC
主要是这句,用来查询到距离:
round((2 * SIN(SQRT(POW(SIN((lat1* pi() / 180.0-lat2* pi() / 180.0)/2),2) +COS(lat1* pi() / 180.0)*COS(lat2* pi() / 180.0)*POW(SIN((lng1 * pi() / 180.0-lng2 * pi() / 180.0)/2),2))))*6378.137* 10000)/10000 AS dist
lat1 lng1是一个经纬度 lat2 lng2是另一个经纬度 代码是从这里提取出来的: http://www.storyday.com/wp-content/uploads/2008/09/latlung_dis.html 它里面的js的主要代码是这样的:
var radLat1 = rad(lat1);
var radLat2 = rad(lat2);
var a = radLat1 - radLat2;
var b = rad(lng1) - rad(lng2);
var s = 2 * SIN(SQRT(POW(SIN(a/2),2) +COS(radLat1)*COS(radLat2)*POW(SIN(b/2),2)));
s = s *6378.137 ;// EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
function rad(d)
{
return d * Math.PI / 180.0;
}
全部的html页面代码:
度分秒 TO 小数点 转换
<i class=“corner”><i class=“l1”><i class=“l2”><i class=“l3”><i class=“l4”>
<input type=“text” id=“deg” name=“deg” onKeyUp=“Convert2Dec()” />度
<input type=“text” id=“min” name=“min” onKeyUp=“Convert2Dec()”/>分
<input type=“text” id=“sec” name=“sec” onKeyUp=“Convert2Dec()”/>秒
=
<input type=“text” id=“deg2” name=“deg2” onkeyup=“Convert2Deg()” />度
<i class=“corner”><i class=“l4”><i class=“l3”><i class=“l2”><i class=“l5”>
经纬度距离计算
<i class=“corner”><i class=“l1”><i class=“l2”><i class=“l3”><i class=“l4”>
A:纬度<input type=“text” name=“lat1” id=“lat1” onKeyUp=“calDis()” /> 经度<input type=“text” name=“lng1” id=“lng1” onKeyUp=“calDis()” />
B:纬度<input type=“text” name=“lat2” id=“lat2” onKeyUp=“calDis()” />经度<input type=“text” name=“lng2” id=“lng2” onKeyUp=“calDis()” />
A-B:距离=<input type=“text” name=“distance” id=“distance” /> Km
<i class=“corner”><i class=“l4”><i class=“l3”><i class=“l2”><i class=“l5”>