2017-09-24 1 views
0

私は〜3000件のレコードを持つデータベースを持っており、それらのそれぞれが、たとえば、カンマで区切られた文字列の座標と座標と呼ばれるフィールドがあります。クライアントとサーバーの2つの座標セットからの距離を取得する方が良いですか?

coordinates: -32.23192381,51.32238190 

をそして、私はいくつかの他の座標を持っています:

coordinates2: -32.21093841,52.99193764 

ので、アルゴリズムが必要があります:latitudelongitude

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にも

答えて

0

do the query on mysql

実行するためにDBに記録するあなたは何のインデックスを持っていない場合でも、それはまだ速い

になりますものではありません
関連する問題