发现使用jQuery

问题描述:

最近的位置(经度和纬度)我有诊所,被取出,并在客户方缓存的列表。 诊所列表包含发现使用jQuery

  • 经度
  • 纬度
  • clinicname

我需要找到使用jQuery最近的诊所位置。由于我M于jQuery Mobile的工作,客户要求显式地指出我需要在缓存数据的工作,而不是查询数据库。

有没有什么办法可以实现用jquery进行地理距离搜索

谢谢

+1

也许这将有助于了解,有多少项此缓存列表包含?迭代整个列表是否可以接受? – nif

+0

的cachelist不会含有太多items..500最大 – Paras

+0

他们是散布在全球各地(在这种情况下,你需要计算大圆距离)或一个相对较小的区域不能太靠近N或S极在这种情况下,你可以用一个简单的欧氏距离(开方(DX^2 + DY^2)与纬度校车吗?你需要如何准确呢? – Spacedman

我刚刚为你做了这个。希望这是你正在寻找的。

的人的位置它请求,并得到一个点(无论该诊所)(第4个功能),从他的距离。然后,它获得哪一个是具有最短的距离(shortestDistance功能)。

var lat1 = "me"; //enter "me" to request location 
var lon1 = 0; 

var lat2 = NUMBERSHERE; //target's latency 
var lon2 = NUMBERSHERE; //target's longitude 
var name2 = "a"; 

var lat3 = NUMBERSHERE; //target's latency 
var lon3 = NUMBERSHERE; //target's longitude 
var name3 = "b"; 

var places = 2; 

getDistance(lat1,lon1,lat2,lon2,name2); 
getDistance(lat1,lon1,lat3,lon3,name3); 

function getDistance(lat1,lon1,lat2,lon2,name2){ 
     if (lat1 == "me"){ 
       getLocation(lat2,lon2,name2); 
       latto = lat2; 
     }else{ 
       getDistancefrom(lat1,lon1,lat2,lon2,name2); 
     } 
} 

function getLocation(lat2,lon2,name2){ 
     if (navigator.geolocation){ 
       navigator.geolocation.getCurrentPosition(getDistanceFromMe); 
       function getDistanceFromMe(position){ 
         x = position.coords.latitude; 
         y = position.coords.longitude; 
         getDistancefrom(x,y,lat2,lon2,name2); 
       } 
     }else{ //geolocation not supported 
     } 
} 



function toRad(value){ 
     return value * Math.PI/180; 
} 

function getDistancefrom(lat1,lon1,lat2,lon2,name2){ 
     R = 6371; //earth radius in km 
     dLat = toRad(lat2-lat1); 
     dLon = toRad(lon2-lon1); 
     lat1 = toRad(lat1); 
     lat2 = toRad(lat2); 

     a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.sin(dLon/2) * 
Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
     c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
     d = R * c; //distance from YOU or Lat1 & Lon1 to Lat2 & Lon2 
     shortestDistance(name2,d) 
} 

i = 0; 
rdistance = "" 
function shortestDistance(name,distance){ 
       if (rdistance == '') 
         rdistance = distance; 
       if (distance < rdistance){ 
         rname = name; 
         rdistance = distance; 
       } 
       i++; 
       if (i == places){ 
         alert(rname); //nearest place 
       } 
} 

从一点到另一点的距离公式取自使用Javascript完成的Haversine示例。