現在、特定の都市のすべてのジオタグ付きツリーを表示するアプリケーションを構築しています。 次のように私はテーブルからデータをフェッチするために使用しています主な列があり、MySQLの北東および南西座標のバウンディングボックス内のデータベースからすべてのポイントを取得します。
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| tree_geotags_id | int(11) | NO | PRI | None | |
| lattitude_dl | double(9,7) | YES | | NULL | |
| longitude_dl | double(9,7) | YES | | NULL | |
+-----------------+-------------+------+-----+---------+-------+
表は158000以上の行があります。
現在、私はこれは、それは0.4の半径ですべてのレコードをフェッチん
SELECT gt.tree_geotags_id, gt.latitude_dl, gt.longitude_dl,
SQRT(
POW(69.1 * (gt.latitude_dl - [ center_lat ]), 2) +
POW(69.1 * ([ center_lon ] - gt.longitude_dl) * COS(gt.latitude_dl/57.3), 2)
) AS distance
FROM tree_geotags_t gt
HAVING distance < 0.4 ORDER BY distance
何を、私の出力を取得するには、次のクエリを使用しています。 地図の中心座標が変更されるたびに(マップパンまたはズームで)、ajax呼び出しを使用してデータを取得し、フェッチされたデータをgeojson形式に変換してマップとしてレイヤーとしてロードします。私がこれを持っている問題は、木が非常に高密度である場所では、マップがすべての点を配置するのに時間がかかり、半径上にそれをフェッチするので、マップの外側にある点もロードされますビューポート。
北東と南西の座標を境界として使用して、ビューポート内の座標のデータのみを読み込むクエリが必要です。私はここでかなり長い間検索しましたが、私の要件に適したものは見つかりませんでした。私を助けてください。前もって感謝します..!!
緯度/経度が下限/目標値よりも大きい項目を除外するWHERE句を追加します。 – CBroe