1

クライアント側で取得およびキャッシュされるクリニックのリストがあります。クリニックのリストには次のものが含まれます

  • 経度
  • 緯度
  • 診療所名

jquery を使用して最寄りのクリニックの場所を見つける必要があります。私は jquery モバイルで作業しているため、クライアントの要件では、データベースに対してクエリを実行するのではなく、キャッシュされたデータを処理する必要があることが明示的に示されています。

jquery で地理的近接検索を実装する方法はありますか?

ありがとう

4

1 に答える 1

2

私はあなたのためにこれを作りました。それがあなたが探しているものであることを願っています。

それは人の位置を要求し、その人からポイント (診療所がある場所) までの距離を取得します (最初の 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の例から取得されます。

于 2013-06-30T15:39:43.340 に答える