問題タブ [rails-geocoder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
520 参照

ruby-on-rails - Geocoder + Rails 3.2 // SQLException: そのような列はありません: 距離:

Geocoder gem を検索フォームに適用しようとすると、同じエラーが発生し続けます。Event Controller に 2 つの異なるクエリが表示されます。それらを単独で使用すると、うまく機能します。しかし、ここに示すように、それらを一緒に使用すると、エラーがスローされます。

イベントモデル

イベントコントローラー

Geocoder クエリのテーブル名を指定する必要があったようです。しかし、方法がわかりません。どんな助けでも大歓迎です!! ありがとう

0 投票する
1 に答える
209 参照

ruby-on-rails - ジオコーダー データを別のテーブルに格納する方法は?

と のアプリがPhotosありLocationsます。

私がやろうとしているのは、フィールドを使用して写真を( geoocoder gem:addressで) 自動地理位置情報にすることですが、地理位置情報データをlocationsテーブルに保存したいです。

この宝石の github ページのチュートリアルに従うことで、これらのデータをPhotos複雑にすることなくテーブルに保存できますが、この自動ジオロケーション マジックを関連付けられたテーブルに移動する方法を想像することさえできません。

さらに、タグ付けのように機能する場合は非常に優れています。提供されたアドレスが既にlocationsテーブルにある場合、スクリプトはそれを新しい/更新された写真に関連付ける必要があります。ただし、データベースにそのようなアドレスがない場合は、新しいロケーション レコードを作成する必要があります。

通常、コールバックを使用して写真を手動でジオコーディングすることにより、100%手動で行いbefore_saveますが、それは非常に汚い解決策であり、私が知らない解決策があると思います。

0 投票する
2 に答える
75 参照

ruby-on-rails - ネストされたリソースループにgecoder gemを実装しますか?

http://railscasts.com/episodes/273-geocoderのチュートリアルに基づいて、ジオコーダーの gem を実装しました。

これはハウス ショー ビュー テンプレートの一部です

これは KM の距離で他のすべての家を表示するので、これは正常に機能します。

同じ家のページに、家がある地域のすべての都市を次のように示しました。

質問: @region.cities ループにジオコーダー gem を実装して、訪問者が家のページで家から都市まで車で何 km かを確認できるようにするにはどうすればよいですか?

ありがとう...レムコ

0 投票する
1 に答える
857 参照

ruby-on-rails - /config/initializers/geocoder.rbに従わないRails Gem Geocoder Lookupメソッド

正確な理由はわかりませんが、構成ファイルに従っていないように見えるという事実を除いて、gem は正常に動作しています。

「puts」コマンドで初期化をテストすると、ファイルが読み取られていることがコンソールに表示されます。

中心的な問題は、メソッド ルックアップを使用して、maxmind または google の IP ロケーション サービスを使用してユーザーの位置を特定するジオコーダー gem を作成したいということです。

自分で作成した /config/initializers/geocoder.rb ファイル ウィッチは次のとおりです。

また、このコードを Google API コードと検索用の Google で使用し、maxmind で使用しました...両方とも、実際にはジオコーダーがまだ freegeoip を使用していることを返します

コントローラーに「puts」エントリを次のように実装しました。

コンソール出力でそれを検出できました。

私が得た:

私はローカルIPを使用していることを知っていますが、すでに展開でテストしており、実際にはルックアップはまだFreegeoipをルックアップサーバーとして使用しています.

誰かが私を助けてくれることを願っています...事前に感謝します。

0 投票する
0 に答える
367 参照

ruby-on-rails - Geocoder/rails: このコードで Google マップ API が呼び出されている場所は?

tl;dr:

すべての Google マップ API 呼び出しをこのメソッドからクライアント側に移動したと思います。何かを見逃しましたが、何がわかりません。

tl;dr コード

geocoder gemnearの一部であるメソッドを呼び出しています。

Location.facilities.near(@center, 50, order: :distance).select(&:item_is_searchable)

Locations モデルのジオコーダー コードは次のとおりです。

これは、ジオコーダーの専門家が私を助けるのに十分な情報である可能性があります。そうでない場合は、ここに詳細があります。より多くの情報。

裏話

私は Rails アプリで Geocoder gem を使用して大成功を収めてきましたが、今では Google マップ API のレート制限に達しています。

1 か月ほど前にレート制限の問題が発生したため、ほとんどのリクエストをクライアント側に移動しました。私は何かを逃したと思います。

プログラムの流れ

  1. ユーザーが検索を入力します
  2. ブラウザが Google マップ API にリクエストを送信します
  3. Google マップ API が座標を返す
  4. ブラウザはそれらの座標をサーバーに送信します
  5. サーバーは座標に近い場所を検索します
  6. 検索した場所から施設や講師のリストを作成
  7. リストは表示のためにブラウザに返されます

最も関連性の高いステップは 5 だと思います。これは、理解できないことを行うためにジオコーダー gem を呼び出す場所であるためです。そのため、それに照準を合わせます (コンテキストのためにステップ 4 と 6 の一部をキャッチします)。

ジオコーディング

座標の Near メソッドによって生成される特定の SQL ステートメントの例を次に示します。(30.267153, -97.74306079999997)

SELECT locations.*, 3958.755864232 * 2 * ASIN(SQRT(POWER(SIN((30.267153 - locations.latitude) * PI() / 180 / 2), 2) + COS(30.267153 * PI() / 180) * COS(locations.latitude * PI() / 180) * POWER(SIN((-97.7430608 - locations.longitude) * PI() / 180 / 2), 2))) AS distance, CAST(DEGREES(ATAN2( RADIANS(locations.longitude - -97.7430608), RADIANS(locations.latitude - 30.267153))) + 360 AS decimal) % 360 AS bearing FROM "locations" WHERE "locations"."addressable_item_type" = 'Facility' AND (locations.latitude BETWEEN 29.54349408444576 AND 30.99081191555424 AND locations.longitude BETWEEN -98.58093480507472 AND -96.90518679492527 AND 3958.755864232 * 2 * ASIN(SQRT(POWER(SIN((30.267153 - locations.latitude) * PI() / 180 / 2), 2) + COS(30.267153 * PI() / 180) * COS(locations.latitude * PI() / 180) * POWER(SIN((-97.7430608 - locations.longitude) * PI() / 180 / 2), 2))) <= 50) ORDER BY distance

他に役立つ情報があれば、お知らせください。