0

Google Maps API V3 を使用して、MySql をデータベースとして Java Web アプリケーションでカスタム マップを作成しています。

フロントエンドでカスタム マーカーを追加し、バックエンドでマーカー座標 (lat/lng) を保存する機能があります。

フロントエンドに方向検索機能を追加し、結果(単一ルート)をバックエンドに保存する予定です。

マーカーが追加されるたびに、マーカーの場所に近いすべてのルート (事前保存) を見つけたいと考えています。

誰かがルートの詳細を保存する効率的な方法と、それをマーカー座標と比較する方法を提案できますか?

ノート :

ウェイポイントとoverview_pathについて学びましたが、どちらもマーカー座標と比較する座標の完全なリストを提供していません。

前もって感謝します

4

2 に答える 2

0

ルートをデータベースに保存するときは、geohashing を使用してすべての境界ボックスを計算し、ルートを通過して別のテーブルに保存します (2 つのフィールド - geohash、route_id を PRIMARY として)。

ルートを検索するときは、ユーザーの位置を中心とし、距離を半径とする円内にあるすべての境界ボックスを計算してから、 でクエリを使用しますgeohash IN (circle_hashes)

于 2013-02-25T16:06:39.317 に答える
0

ウェイポイントの座標をデータベースに保存すると、 Haversine 式を使用 してマーカーに最も近いウェイポイントを検索できます このクエリには式が組み込まれ、 PDOが使用されます

$stmt = $dbh->prepare("SELECT  name, lat, lng, ( 3959 * acos( cos( radians(?) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + sin( radians(?) ) * sin( radians( lat ) ) ) ) AS distance FROM mytable HAVING distance < ? ORDER BY distance LIMIT 0 , 1");
    // Assign parameters
    $stmt->bindParam(1,$center_lat);//lat coordinate of user
    $stmt->bindParam(2,$center_lng);//lng coordinate of user
    $stmt->bindParam(3,$center_lat);//lat coordinate of user
    $stmt->bindParam(4,$radius);//Radius in miles 
于 2013-02-22T15:38:09.417 に答える