私は〜3000件のレコードを持つデータベースを持っており、それらのそれぞれが、たとえば、カンマで区切られた文字列の座標と座標と呼ばれるフィールドがあります。クライアントとサーバーの2つの座標セットからの距離を取得する方が良いですか?
coordinates: -32.23192381,51.32238190
をそして、私はいくつかの他の座標を持っています:
coordinates2: -32.21093841,52.99193764
ので、アルゴリズムが必要があります:latitude
とlongitude
:
1)2枚に文字列を分割します。
2)このような関数を使用して距離を取得:
function getDistance(lat1, lng1, lat2, lng2){
radius = 6371
dLat = deg2rad(lat2-lat1)
dLng = deg2rad(lng2-lng1)
a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLng/2) * Math.sin(dLng/2)
c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a))
return radius * c
}
function deg2rad(deg){
return deg * (PI/180)
}
3)距離未満で10キロであるレコードの配列を返します。
私はそう何が速くなり、クライアント用サーバーとJSのためのPHPを使用しています:
1)JavaScriptにJSONとしてDBからレコードを渡した後、すべてのレコードのためのアルゴリズムを実行します。のみPHPとを有する10キロ未満のレコードを持つ最終的な配列を渡すこと
又は
2)ください。
どちらが速くなりますか?
また、これは遅すぎますか?私は決して3000以上のレコードを持っていることはありませんが、それは遅いのが好きなようです。どう思いますか? 3000にも