2011-12-15 11 views
0

私はマップから場所の逆引きを試​​みています。 私のデータベースには、座標と詳細が異なる場所があります。可視領域を追跡するGoogle MapまたはMapquest API

ここで、地図をズームイン/ドラッグするか(Mapquestで)ドラッグすると、すべてのエントリが地図の表示領域にドロップダウンで表示されます。マップのズームレベルと位置に従ってリストを更新する必要があります。

とにかくこれを行うにはありますか。私はGoogleマップでもOKです。

ここに私が達成したいと思うリンクがあります。 http://oobgolf.com/courses/finder/

答えて

1

基本的に...ビジネスロジックはこのようなものです:

あなたがマップオブジェクトから境界を取得し、レコードをフェッチするSQLクエリにAJAXを経由してパラメータとしてこれらを渡す必要があり、例えばminLat/maxLat & minLng/maxLng ...これらはWHERE条件に入ります。これは、あなたの地理データから「四角形を切り取る」でしょう。これらの値を5〜10%調整すると、境界に非常に近いポイントがマップに塗りつぶされることはありません(これは美容的な修正です)。

ちょうど(それがjQueryのを使用しています)、GoogleマップAPIのための私のドライブ上のいくつかのサンプル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(で行うことでする必要があります)...これは動作しません、他 - データ型フロートである必要はもちろん

WHERE 
     (`location`.`latitude` BETWEEN ".(float)$minX." AND ".(float)$maxX.") 
    AND 
     (`location`.`longitude` BETWEEN ".(float)$maxY." AND ".(float)$minY.") 

テーブルの列:SQLの条件はそのようなものになるだろう

ザ・確かに。

あなたが見ることができるように、私はfloatに文字列からキャストよ - 比較を可能にするために...このことができます

希望、マップクエストのためのコードは変更される場合があります - しかし論理は全く同じでなければなりません。

Source

+0

ドロップマーカーがあり、四隅のうち2つだけが使用されていることがわかります。 –

0

このロジックは、同様にマップクエストのAPIのために動作します。マップの範囲に基づいてデータベースを照会できるように、マップの現在の範囲を照会に渡す必要があります。クエリの結果にドロップダウンメニューが表示されるので、マップに現在表示されているすべてのPOIにドロップダウンメニューに対応する項目が表示されます。

MapQuest JavaScript APIを使用している場合は、マップエクステントの現在のバウンディングボックスを返すMQA.TileMap.getBoundsメソッドを見てください。 MapQuest Developer NetworkのWebサイトにあるフォーラムでは、質問があったときに非常に役立つことが分かりました。助けが必要な場合、または詳細な説明が必要な場合は、質問やコードサンプルを投稿することをためらってください。ここにリンクがあります:http://developer.mapquest.com/web/products/forums/

関連する問題