ブラウザのクライアント側で関数を実行し、たとえば ajax 呼び出しで緯度と経度をサーバーに送信し、応答データを使用してページに反映する必要があるようです。そのためには、そのようなリクエストを管理するためだけにサーバー側に新しいエンドポイントを追加する必要がありますか? ユーザーがページを読み込んだときに、着信リクエスト内からそのデータを取得することはできませんか?
2 に答える
すでに述べたように、ジオロケーションはクライアント側の Javascript で実行されます。これは、サーバーへの最初のリクエストが完了したときに実行され、HTML がクライアントに配信され、Javascript が実行されます。いいえ、地理位置情報データは後で実行されるため、最初のリクエストで使用することはできません。
最初のリクエストでできることは、ユーザーの IP を使用して、少なくともおおよその位置情報を取得することです。ユーザーは地理位置情報データをウェブサイトに提供することを拒否したり、単に無視したりする可能性があるため、一般的にこれは良い方法だと思います。IP ベースのアプローチでは、少なくともフォールバック ソリューションを持つことができます。
ジオロケーションには、2 つのソリューションがあります。
1 つは HTML5 ジオロケーション API です。存在する場合 (Modernizr で確認できます)、位置データ (location
オブジェクト全体) をサーバー上の ajax スクリプトにユーザー ID などと共に送信します。
ユーザーが HTML5 地理位置情報を拒否するか、古いブラウザーを使用している場合は、ajax エンドポイントを再度使用しますが、位置オブジェクトは null です。サーバー側で確認し、null の場合は、ヘッダーの受信 IP を確認し、GeoIP データベースを使用してユーザーを特定します (約 40 km の精度)。
そうすれば、クライアント側のjsとサーバー側のajaxスクリプトが連携して、多かれ少なかれ正確にユーザーを見つけますが、常に見つけます;)
編集 : 最初のページの読み込み時に着信地理位置情報が必要な場合は、要求ヘッダーから着信 IP を取得し、GeoIP を使用してユーザーの地理位置情報を取得します ;-)