3

かなり単純に思えますが、私は苦労しています。

これが私がこれまでに見たものです。動作をテストするためだけに位置座標を表示します。しかし、私はデータベースにも永続化したいので、ajax 呼び出しを行います。私はこれを正しい方法で行っていますか、それとももっと簡単またはより良い方法がありますか?

<p id="demo">Click the button to get your coordinates:</p>
<button onclick="getLocation()">Try It</button>
<script>
    var x=document.getElementById("demo");
    var lat;
    var long;
    function getLocation()
    {
        if (navigator.geolocation)
        {
            navigator.geolocation.getCurrentPosition(showPosition);

        }
        else{x.innerHTML="Geolocation is not supported by this browser.";}
    }
    function showPosition(position)
    {
        lat = position.coords.latitude;
        long = position.coords.longitude;
        x.innerHTML="Latitude: " + lat +
                "<br>Longitude: " + long;

        $.ajax({
            type: 'POST',
            url: 'http://localhost:3000/locations',
            data: { lat: lat, long: long },
            contentType: 'application/json',
            dataType: 'json'

        });
    }
</script>
4

3 に答える 3

7

「より簡単な」方法を試すことができます。ジオコーダー gem を使用します。これにより、ユーザーの場所を取得するための複数の方法が提供されます。そのうちの 1 つはリクエストによるものです。

request.location.city => Medellin
request.location.country => Colombia

次のリンクで役立つ情報を見つけることができます

レールキャスト

公式ウェブページ

GitHub

于 2013-10-15T15:47:53.027 に答える
2

この回答を確認してください。基本的には、Cookie を介して地理位置情報を設定し、コントローラーの Cookie から緯度と経度を読み取るだけです。

于 2013-10-15T15:01:07.720 に答える
0

これが私がそれをした方法です:

コントローラ:

def location
    respond_to do |format|
      format.json {
        lat = params["lat"]
        lng = params["lng"]
        radius = 5000
        type = "restraunt"
        key = "-"
        url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=#{lat},#{lng}&radius=#{radius}&types=#{type}&key=#{key}"
        data = JSON.load(open(url))
        render json: { :data => data }
      }
    end
  end

ルート.rb:

get "/location" => "application#location"

見る:

function getLocation(){
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function (position){
          $.ajax({
            type: 'GET',
            url: '/location',
            data: { lat: position.coords.latitude, lng: position.coords.longitude },
            contentType: 'application/json',
            dataType: 'json'
            }).done(function(data){
               console.log(data)
            });
        });
    }
  }
于 2016-05-26T17:55:35.270 に答える