0

ご協力いただきありがとうございます。いくつかのサンプル サイトを確認しましたが、私の Web サイトで達成しようとしているものと一致するこのコードのバージョンを見つけることができませんでした (Ruby on Rails、2.3.15、1.8.7)。

私の目標:

私の Web サイトには、ユーザーがドライブ ルートを作成できるツールがあります。私の目標は、マップをロードする前に、[近くのポイントを表示] チェックボックスをクリックするオプションをユーザーに提供することです。もしそうなら、マップにルートに沿った POI を表示したいと思います。

わたしはどこにいますか

RouteBoxer を実装しました。これは、ルートに沿って関心のあるポイントを見つけるための最良のオプションであると信じています。Routeboxer は私のために働いています。作成したルートの周りにボックスを描画します。しかし、これは私が立ち往生しているところです。画面にルートとたくさんのボックスが表示されました。RouteBoxer から緯度と経度の境界を実際に取得するにはどうすればよいですか? では、RouteBoxer を介してデータを渡すにはどうすればよいでしょうか?

詳細

「myinfo」という名前の MySQL データベースと、その中に「masterlocations」という名前のテーブルがあります。各場所には、「ID」、「Lat」、「Long」、「ニックネーム」、およびその他の情報があります。

マップ Web ページ コントローラーをいろいろ試してみたところ、緯度と経度をハードコーディングすることで場所のリストを取得できることがわかりました。テストは次のようになります。

@nearbylocations = Masterlocation.find(:all, :conditions => ["latitude > 25 AND latitude < 30"], :order => ['nickname asc'])

次のステップ / アドバイス

RouteBoxer ポリゴンの緯度と経度を把握し、この緯度と経度の範囲内に位置する場所があるかどうかを何らかの方法で確認する必要があると思います。その場合、API が POI のマーカーを作成する方法を見つける必要があります。

上記を達成する方法について提案はありますか?私は Ruby と Google Maps API V3 の両方にかなり慣れていないので、これを行う明白な方法を吹き飛ばしてしまったら申し訳ありません。あなたが提供/リンクできる詳細やコードは素晴らしいでしょう! お時間をいただきありがとうございます。

4

1 に答える 1

0

最初にルーター ボックスからボックスを取得します var box = routeBoxer.box(path, distance);

ボックスは単なる一連の緯度/経度です

for (var i = 0; i < boxes.length; i++) {

 var northeast = boxes[i].getNorthEast();
 var southwest = boxes[i].getSouthWest();
 var lat_north = northeast.lat();
 var long_east = northeast.lng();

 var lat_south = southwest.lat();
 var long_west = southwest.lng();
...

ボックスの境界 (それを構成する緯度/経度) を取得したので、すべてのポイントをループして、それらがこのボックス内にあるかどうかを確認できます。これを確認するには、単純な「このポイントがこの長方形に存在するか」アルゴリズムです (box.left と box.right の間に point.x があり、box.top と box.bottom の間に point.y がある場合)。

要約すると、ボックスをループする { 座標をループする { } }

もちろん、これはほんの始まりにすぎません... これは、すべてのポイントがすべてのボックスに対してチェックされる「強引な」方法であり、ルートとボックスの数によっては、膨大な数の順列が発生する可能性があります。あらゆる種類のアルゴリズムを使用して、改善の余地がたくさんあります。私がそれをやったとき、それがこの演習の楽しい部分でした-これまたはそれを使用すること。サーバー側またはクライアント側のクランチを行う...選択...お楽しみください...

于 2013-10-04T21:39:30.567 に答える