web-dev-qa-db-ja.com

ロケーションベースのユーザー入力を収集する最良の方法

私は、ユーザーが自分の位置に関する情報を登録および提供できるWebサイトで作業しています。ユーザーが誤ったデータを入力するのを防ぐために、ユーザーがフリーテキスト情報を提供することを望まず、代わりに可能な限り事前定義された値から選択します。これらの値を提供する方法は2つあると考えています。外部サービスプロバイダーにAPIを使用するか、独自のlocal databaseを作成します。

API

一部のリソース:
- https://developers.facebook.com/docs/reference/ads-api/get-autocomplete-data/
- http://developer.yahoo.com/geo/geoplanet/

長所:
-データの正確さと完全性。
[。
-使いやすく/早く始められます(ローカルデータベースを作成する必要はなく、APIを実装するだけです)。

短所:
-外部APIに可用性の問題がある場合のパフォーマンスの低下。
-外部APIの変更による停止(コードが更新されて変更が反映されるまで)。
-外部プロバイダーとのロックイン。

ローカルデータベース

一部のリソース:
- http://developer.yahoo.com/geo/geoplanet/data/
- http://www.maxmind.com/app/geolitecity
- http://download.geonames.org/export/dump/

長所:
-外部依存関係なし:安定性とパフォーマンスが向上しました。

短所:
-開始するにはさらに作業が必要です(データベースと対話するには、データベースとコードを作成する必要があります)。
-不正確/不完全なデータのリスク、初期または長期にわたる。
-データベースを最新の状態に保つためのメンテナンス作業が増えました。

ユーザーから要求された深さ情報は次のとおりであると仮定します。
-country:値に興味がある。地域のリストを絞り込むためにも使用されます。
-region(米国の州、英国の郡...):値自体に関心はなく、狭めるためにのみ使用都市のリスト。
-city:価値に関心がある(地域の統計が必要な場合、関連する地域の計算に使用できます)。
-address:オプションですが、値に関心があります。

どのオプション(APIまたはlocal database)を選択しますか?実装のためにどのようなヒントを出しますか?他にどのようなリソースを共有できますか?

2
Max

私のIPは動的(DHCP)ですが、市が60マイル離れている場合でも、市にとって正確ではありません。アプリケーションがユーザーをその都市に強制している場合、直帰率が高くなります。

最善の策は、ローカルに保存され、APIよりも高速なMaxMind IP to Countryデータベースを使用することです。舞台裏のIPの国を集めて、ユーザーに強制的に提供させません。次に、ユーザーが登録しているときではなく、別のデータベースから領域を収集します。

ユーザーにこのタイプの情報を要求し、それを自動生成してデータベースと比較しようとすると、サイトを離れる多くの人々に出くわします。プロキシ、VPN、またはTorを実行している人はどうなりますか?

1
Anagio

収集した情報を検証することの重要性を再度強調します。結局のところ、それを収集するのに十分重要である場合は、正しい当局/情報源に対して正しいことを確認した方がよいでしょう。それが重要でない場合、なぜそれを収集してユーザーに負担をかけるのですか?

私は SmartyStreets で働いており、ユーザーの場所、具体的には住所を検証するため、これらのような多くの問題を解決しました。次に、APIが価値を提供する最も堅牢なソリューションであることをお勧めします。言い換えれば、長所と短所のリストからの違いは明らかです。ローカルデータベースの構築は、プロのAPIを使用する潜在的な最小限の副作用よりもはるかにコストがかかります。

正確なユーザージオロケーションを実現する最も効果的な方法の1つは、特定の正しい情報を収集することです。多くの人が住所を収集しますが、実際に存在する正しい住所であることを確認する人はほとんどいません。 GoogleやYahooなどのサービスはこれを提供していません。アドレスapproximationではなくverificationを実行し、結果は最良の推測であることに注意してください。

米国の住所の場合、USPS CASS -は、少数のベンダーが信頼できる住所と場所のデータを他の人に提供することを証明します。これらを自分でGoogleで検索することもできますが、探しているのは LiveAddress API のようなもので、これは米国の住所を確認して位置を特定します。

データベース、リスク、およびあなたがあなた自身のデータベースの構築について言及した他の短所を構築し、維持するためにかなりのリソースを投資したと言うことができます。また、APIについてリストした短所にも取り組んでいます。詳細については SLA を参照してください。パフォーマンスと稼働時間を確保するために、3つの冗長データセンターにAPIが地理的に分散されている唯一のベンダーであることに留意してください。言い換えれば、それは非常に高速であり、リクエストは並行して処理されます。

最新の(HTML5など)ジオロケーション機能の使用はある程度正確ですが、現在でも、それらの互換性は理想的な設定の最新のブラウザーに制限されています(アイオワで育ち、ジオロケーションは都市部とはかけ離れています)。しかし、本当に必要な場合は、ユーザーのアドレスを取得して確認することで、必要なものを確実に取得できます。それが私がすることです。

1
Matt