2011-11-11 10 views
0

Googleマップのapi v3を使用してWebアプリケーションを作成しています。これは顧客の関心のある場所を表示します。これらはGoogleマップに表示される場所ではなく、ユーザーが特定のニーズに合わせて結果をフィルタリングできるようにします。Google Maps APIアドレスの地域を取得する

私は地図がユーザーの現在の場所を中心にしているように作業しています。ただし、希望する場合は、別のアドレスに入力することができます。私がこれを行うと、マップはデフォルトでアメリカ地域になります。

地図の地域パラメータをユーザーの現在地から取得し、これを使用してより適切な結果を得る方法はありますか?

私が実装したい別の機能は、指定された場所から特定の(ユーザーが指定できる)距離内の結果のみを検索することです。現在、すべての場所はMySQLデータベースに格納されています(住所、緯度、経度)。すべての場所を繰り返し処理し、距離を判断するにはthis formulaを使用します。私は、データベースに50,000箇所の場所があると予想しています。

この計算の応答時間が心配すべきでしょうか?もっと速くできる方法がありますか?私のデータをMySQLデータベースに保存しているのは、この種のアプリケーションには一般的には良いアイデアですか?

答えて

1

バイアスジオコーダの結果:

バイアスには、ジオコーダの結果は、あなたがregionパラメータとしてnavigator.languageを使用することができます。より関連性の高い結果をユーザーに提供する必要があります。

結果を改善する他の方法は、ユーザーの現在地を使用することです。 viewport biasingを使用して結果を向上させることができます(ユーザーの現在地周辺のいくつかのバウンディングボックスを計算することができます)。

regionパラメータの値を取得するためにユーザーの現在地を使用することは問題があります。ある場所からIANA language subtagを取得する公開APIがあるかどうかはわかりません。しかし、逆ジオコーダーを使用してロケーションを変換し、結果から国コードを抽出することができます。問題は、一部の国コードが必要なIANA言語サブタグと一致しないことです(caはカナダの国コードですが、カタロニア語、バレンシア語の言語サブタグなど)。しかし、言語サブタグの代わりに国コードを使用する時間のほとんどは、結果を改善するはずです。 MySQLのDBに緯度経度の保存

は:

私はすべての場所によってその反復怖いと半正矢式を適用することは非常に時間がかかる(それhereに関するいくつかの研究を)かもしれません。

おそらく、MySQLで遅延データを処理する最も良い方法は、spatial extensionsを使用することです。使用についてはnice blog postです。

関連する問題