ユーザーの位置情報を取得するには、geolocation api をサポートするブラウザーが必要です (ただし、これを行うにはユーザーの同意 (ここに例を示します) が必要です) (IE9+ およびほとんどのモバイル OS のブラウザーを含む、ほとんどの新しいブラウザーはその機能をサポートしています。 Windows Phone 7.5 以降を含む)。
あとは、JavaScript を使用して場所を取得するだけです。
if (window.navigator.geolocation) {
var failure, success;
success = function(position) {
console.log(position);
};
failure = function(message) {
alert('Cannot retrieve location!');
};
navigator.geolocation.getCurrentPosition(success, failure, {
maximumAge: Infinity,
timeout: 5000
});
}
オブジェクトは、ユーザーの位置のposition
緯度と経度を保持します (ただし、デスクトップ ブラウザーの人口密度が低い地域では、GPS デバイスが組み込まれていないため、これは非常に不正確になる可能性があります)。さらに説明すると、ここライプツィヒでは、デスクトップ コンピューターで約 300 メートルの精度が得られます。携帯電話の GPS デバイスで約 30 メートルの精度が得られます。
次に、 Google Maps API (逆ジオコーディングについてはこちらを参照)で座標を使用して、ユーザーの場所を検索できます。必要に応じて、 Rails 用の gemがいくつかあります。私はそれらを使用する必要性を感じたことはありませんが、一部の人々はそれらを気に入っているようです.
国/都市のリストについては、Geonamesから取得できるデータをプロジェクトで 1 回使用しましたが、最初に必要に応じて変換する必要がありました。