5

多くのサイトで、私の現在の都市が印刷されているのを見ました (例: "Hello to Berlin.")。彼らはどのようにそれをしますか?そのために必要なものは何ですか?主要部分はここの JavaScript だと思いますが、このようなものを自分のアプリに実装するために必要なものは何ですか? (または、Rails 用の gem はありますか?)

また、まだ 1 つのことをお願いしたいと思います - ユーザーが自分の州 (ドイツとしましょう) を選択する州のリスト (通常は選択ボックス) に興味があります。ドイツで地域を選択すると、選択した地域のそれぞれの都市が表示されます。

州/都市/地域のこの巨大なデータベースを入手できる場所はありますか? 私たちのアプリに似たようなものがあると面白いですが、それらのリストがどこにあるのかわかりません...

4

7 に答える 7

3

ユーザーの位置情報を取得するには、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 回使用しましたが、最初に必要に応じて変換する必要がありました。

于 2012-08-08T12:18:33.400 に答える
1

正しい構文は次のとおりです。

navigator.geolocation.getCurrentPosition(successCallBack, failureCallBack);

使用する :

    navigator.geolocation.getCurrentPosition(
        function(position){
            var latitude  = position.coords.latitude;
            var longitude = position.coords.longitude;
            console.log("Latitude : "+latitude+" Longitude : "+longitude);
        },
        function(){
            alert("Geo Location not supported");
        }
    );         
于 2013-10-21T09:08:04.810 に答える
1

getCurrentPosition()GPS が十分な精度を得るのを待つのに多くの時間を費やさないため、不正確であることがよくあります。getCurrentPosition()私は、時計の位置を模倣して実際に使用し、返される結果がより正確になるまで監視する小さな JavaScript を作成しました。

外観は次のとおりです。

navigator.geolocation.getAccurateCurrentPosition(onSuccess, onError, {desiredAccuracy:20, maxWait:15000});

コードはこちら - https://github.com/gwilson/getAccurateCurrentPosition

于 2012-08-12T17:06:40.617 に答える
0

インターネット サービス プロバイダーは大量の IP アドレスを購入するため、よく目にするのは既知の ISP への IP のバックトレースです。彼らは ISP と世界中の場所を含むデータベースを持っているので、あなたがどこから来たのかを知ることができます. http://www.ipaddresslocation.org/のようなサイトを使用して作業を行うことができます。見回すと、IPを入力して場所を取得できるサイトが必ずあるので、訪問者のIPを使用してそのサイトにPOSTリクエストを送信し、応答から場所を取得するだけです.

または、場所と割り当てられている IP 範囲のチャンクを含む ISP データベースを探すこともできます。おそらく有料のものを見つけることができますが、無料のものを見つけるのは難しいかもしれません. または、この無料のデータベースをチェックしてください http://www.maxmind.com/app/geolite

于 2012-08-08T12:11:47.413 に答える
0

PHPで場所を見つけるための別のAPIを次に示します。

http://ipinfodb.com/ip_location_api.php

于 2012-08-08T12:17:23.320 に答える