2011-10-20 3 views
0

私はうまくいけば主にPHPになるので、後でJavascriptを必要としないスクリプトを作っていますが、今はいくつかのことに固執しています。PHPとJavascriptの配列とGPSの場所

  1. GPSの場所を保存して比較する最良の方法は何ですか?データベースに保存して(現在はMySQLを使用して)、いくつかのコードで近くの人を見つけることができますが、特にデータベースに値がたくさんある場合は、かなり集中的になる恐れがあります。これはサーバー上で実行する必要があります。私は現在現在PHPを使用しています。

  2. このデータを取得してGoogleマップで表示するにはどうすればよいですか?私はすでにデータを入れているときに私のコードが動作していますが、このデータをデータベースから取得したいと思います。あまりにも多くのユーザーに、世界中のすべての人々を代表する1つのGoogleマップビューに100個のマーカーを配置するよう依頼していますか?あるいは、私は特定の地域内の人々に固執すべきですか?私の現在のコードは次のとおりです。

    var people = [ ['Type1', -33.890542, 151.274856], 
           ['Type2', -33.923036, 151.259052], 
           ['Type2', -34.028249, 151.157507], 
           ['Type2', -33.80010128657071, 151.28747820854187], 
           ['Type1', -33.950198, 151.259302] 
          ]; 
    

    各「タイプ」は異なる画像を表示するので、私は、タイプを引っ張るデータベースから緯度と長いと、このJavaScript配列にそれらを配置する必要があります。

私はJavaScriptと地図のこちら側に新たなんだ、そこに投げいくつかの質問があります知っている:)

+0

http://code.google.com/apis/maps/documentation/javascript/basics.html#Geolocation – Petah

+0

:上記のリンクではオリジナルの式は次のようになります。私は彼らの位置を(彼らの許可を得て)保存するためにそれを使用して作業しています、そして、それをウェブサイトに行く他の人にマップします。 –

+0

MySQLの空間的な機能を使用してデータを保存することができます:http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html – F21

答えて

1

1.あなたの最初の質問

私は何かを解決しなければなりませんでした先週のように、私はこれを好きでした。
私はGPSデータベース(gps_latgps_lon)でMySQLデータベースにいくつかのオフィスのリストを持っていて、現在の場所($latitude,$longtitude)の距離をkmで並べ替える必要があります。

// MySQL query in PHP 
// btw, I'm storing GPS coordinates in decimal format like 51.123234 
$varA = "(POW(SIN((gps_lat - $latitude)/2 * 0.017453293), 2) + COS($latitude * 0.017453293) 
     * COS(gps_lat * 0.017453293) * POW(SIN((gps_lon - $longtitude)/2 * 0.017453293), 2))"; 

$query = "SELECT *, (6378.140 * 2 * ATAN2(SQRT($varA), SQRT(1-$varA))) AS distanceInKm "; 
$query += 'FROM Office ORDER BY distanceInKm'); 

$mysqli->query($query); 
// ... 

// the magic constant 0.017453293 is PI/180 (just check the link below). 

Deriving the Haversine Formulaこれは多分私を助けてくれました。私はこれが奇妙なSQLのように見えます。 $varAは、2回繰り返される数式の一部に過ぎません。私は実際に、そのおかげでPetahを使用してきた

dlon = lon2 - lon1 
dlat = lat2 - lat1 
a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2 
c = 2 * atan2(sqrt(a), sqrt(1-a)) 
d = R * c 
+0

ありがとう、非常に良いです。リンクを読んでいたら、それがどのように機能するかを知っていると思うので、今すぐ試してみましょう。私は、ユーザーの現在の位置(gps_latとgps_lon)を変数座標$ latitudeと$ longtitudeと比較していると仮定していますか?私は最後のビットをあまり得ていませんが、私はそうした構文について知識がありません! :( –

+0

はい、あなたは正しいです。私はポストを更新しましたので、多少理解できるかもしれません。 – martin

関連する問題