基本的に...ビジネスロジックは次のようになります。
マップオブジェクトから境界を取得し、AJAXを介してこれらをパラメータとしてSQLクエリに渡す必要があります。SQLクエリは、レコードをフェッチします。たとえば、minLat / maxLat&minLng /maxLng...これらはWHERE条件に入ります。これにより、地理データから「長方形が切り取られ」ます。これらの値を5〜10%調整して、境界に非常に近いポイントがマップにペイントされないようにすることができます(これは単なる見た目の修正です)。
Google Maps API(jQueryを使用)のドライブでサンプルJSコードを見つけました。
function loadViewport() {
var b = map.getBounds();
$.minY = b.getNorthEast().lng();
$.maxY = b.getSouthWest().lng();
$.minX = b.getSouthWest().lat();
$.maxX = b.getNorthEast().lat();
$.url = "http://www.somehost.com/data.php?mode=viewport&minX="+$.minX+"&maxX="+$.maxX+"&minY="+$.minY+"&maxY="+$.maxY;
$.ajax({type:"GET",url:$.url,dataType:"json",success: parseJSON});
}
左側のリストへの入力は、関数parseJSON()で行う必要があります...
SQLのWHERE条件は、次のようになります。
WHERE
(`location`.`latitude` BETWEEN ".(float)$minX." AND ".(float)$maxX.")
AND
(`location`.`longitude` BETWEEN ".(float)$maxY." AND ".(float)$minY.")
もちろん、テーブルの列はデータ型floatである必要があります。そうでない場合、これは確実に機能しません。
ご覧のとおり、比較を可能にするために、文字列からフロートにキャストしています...
これがお役に立てば幸いです。MapQuestのコードは異なる場合がありますが、ロジックはまったく同じである必要があります。
ソース