2011-12-15 92 views
0

我想從地圖反向查找位置。說,我有我的數據庫中的不同位置與他們的座標和細節。谷歌地圖或Mapquest API來跟蹤可見區域

現在,無論何時放大/縮小或拖動地圖(在Mapquest中),所有條目都應顯示在地圖可見區域的下拉列表中。它應該根據地圖縮放級別和位置更新列表。

有沒有辦法做到這一點。我對谷歌地圖也很好。

這是我想要實現的鏈接。 http://oobgolf.com/courses/finder/

回答

1

...基本商業邏輯是這樣的:

您需要從地圖對象獲得的邊界,然後通過這些作爲通過AJAX參數的SQL查詢其獲取的記錄,如minLat/maxLat & minLng/maxLng ...這些進入WHERE條件。這將從你的地理數據中「剪出一個矩形」。您可以將這些值調整5-10% - 以便非常接近邊界的點不會被繪製到地圖上(這只是一個整體修正)。

只是發現了一些樣品JS代碼我的驅動器的谷歌地圖API(它使用jQuery的)上:

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的SQL的條件是類似的東西:

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

當然在表中的列必須是數據類型float的 - 否則這不會對工作當然。

正如你所看到的,我從字符串鑄造浮動 - 爲了使比較...

希望這有助於爲MapQuest的代碼可能會有所不同 - 但邏輯應該是完全一樣。

Source

+0

在那裏放置標記以查看只使用了四個角中的兩個。 – 2016-05-13 23:41:38

0

這個邏輯作品爲MapQuest的API的爲好。您需要將地圖的當前範圍傳遞到查詢中,以便您可以根據地圖的範圍查詢數據庫。然後,查詢結果將填充到您的下拉菜單中,因此當前在地圖上顯示的所有POI都將在下拉菜單中顯示相應的項目。

如果您使用的是MapQuest JavaScript API,請查看MQA.TileMap.getBounds方法,該方法返回地圖範圍的當前邊界框。我發現MapQuest Developer Network網站上的論壇在我遇到問題時非常有幫助,所以如果您需要幫助或需要進一步澄清,請隨時發佈問題或代碼示例。這裏是鏈接:http://developer.mapquest.com/web/products/forums/